数组方法和函数式编程

惜命的最好方式,不是养生,而是折腾自己!

一、数组三巨头,

1、constructor

数组也是对象,是Array这个构造函数的实例,而数组的constructor指向Array这个构造函数本身;除了Global和Math对象之外的所有内部js对象,都具有constructor这个属性;global是js运行时所在的宿主环境的全局对象,在浏览器中相当于window,在nodejs中是global。

2、prototype

为数组的实例返回原型的引用,这样我们就可以在Array上挂载自定义方法,在数组中调用;

3、length

获取或设置数组的长度,在js中数组是稀疏的,且数组中的元素不一定是连续的,length属性不一定是数组中的元素数;

二、数组方法返回数组

1、from

将可迭代的对象变成数组,

2、of

传入的每一个参数,都将作为数组的元素;

3、concat

连接(合并)两个或两个以上的数组,

4、map

对数组的每个元素调用回调函数并返回包含结果的数组,也可以说,对数组原有元素进行修改,然后返回新数组;

5、filter

返回数组中的满足回调函数中指定的条件的元素,

两个参数,第一个为回调函数,第二个为thisArg参数的用法,该参数指定对其用的this关键字的对象;

三、数组的增删改查

1、push

将新元素添加到数组中,并返回一个新的数组长度;

2、unshift

在数组的开头插入新元素;

3、shift

移除数组的第一个元素,并返回该元素;

4、slice

截取数组,一个参数为起始位置,第二个为结束位置;

5、splice

从一个数组中移出元素或替换元素,改变原数组;第一个参数为起始位置。第二个为移除元素个数,之后的参数为替换的元素;

6、pop

移除数组的最后一个元素,并返回该元素,原数组改变;

7、indexOf

返回数组匹配到值得 索引,两个参数,一个为要匹配的值,另一个为要匹配的其实位置;

四、变着花样玩

1、join

添加指定分隔符,变为字符串;

2、reverse

翻转数组;

3、sort

数组排序

4、toString

把数组转为以逗号间隔的字符串;

5、fill

填充数组,第一个参数是要填充的值,第二个是开始填充的位置,第三个是结束填充的位置,这个方法很少用,一般我们用splice。

6、reduce

累加数组,返回每次调用函数的返回值,通常使用两个参数,一个previousValue,上一个函数的返回值,

另一个是currentValue,本次函数的值。

五、测试数组

1、some

some 方法会按升序索引顺序对每个数组元素调用 callbackfn 函数,直到 callbackfn 函数返回 true。如果找到导致 callbackfn 返回 true 的元素,则 some 方法会立即返回 true。也就是说数组中只要有满足条件的就返回true;

2、every

every 方法会按升序顺序对每个数组元素调用一次 callbackfn 函数,直到 callbackfn 函数返回 false。如果找到导致 callbackfn 返回 false 的元素,则 every 方法会立即返回 false。也就是说数组中的每一个元素都满足条件才能返回true,只要有一个不满足就返回fasle;

六、函数式编程风格

js并非函数式编程语言,但可以应用这种技术;那么什么是函数式编程呢?函数式编程主要思想是把运算过程尽量写成一系列嵌套的函数调用,而在js中我们利用数组方法来进行这种编程,比如map()、reduce()、filter()等等;在数组方法中有一类方法,可以传入一个方法callbackfn当做参数,第二个参数可选,同时第二个参数是第一个参数方法中的this的指向对象;

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180319G1D85X00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

同媒体快讯

扫码关注云+社区

领取腾讯云代金券