JS对数组的处理(包含ES6)

JS有很多处理数组的方法,这些方法都是Array内置对象的方法。该文章是对这些方法的用途的总结,方便翻阅,并不提供具体使用示例。

众所周知,数组是引用类型,所以我把这些方法分为两类,一类是直接对原数组操作,会改变原数组的方法,另一类是返回一个副本,对这个副本的操作不会改变原数组的方法。另外,我把ES6新增方法放在后面列出来。

一、会改变原数组的方法

1.splice(index,num,addItem),第一个参数表示从哪里开始删除,第二个参数表示删除的个数,第三个参数表示添加的新内容,前两个参数是必须的,第三个参数可选。返回值为从原始数组中删除的项。不传参数时,会返回空数组。但是在vue中,有一个新用法,example1.items.splice(newLength),这个代码可以修改数组长度。

2.push()方法向数组末端添加元素,并返回修改后的数组长度。

3.pop()方法从数组末尾移除一项,并返回被移除的项。

4.shift()方法移除数组第一项,并返回该项。

5. unshift()方法向数组前端添加一项,并返回新数组的长度。

6.sort()方法,默认调用每个数组项的toString()方法,然后比较得到的字符串,无论什么类型的数组项,比较的都是字符串。

   还可以接收一个比较函数作为sort方法的参数,用来对数组元素进行排序。高级教程93页


二、不会改变原数组的方法

1.slice(start,end),第一个参数表示从哪里开始截取数组,第二个参数表示从哪里结束,返回数组为原数组从start到end-1的项。当start和end为负数时,表示从末尾计算的索引值,-1表示最后一个,以此类推。不传参数时,会返回原数组。借助 var otherArr = oneArr.slice();可以获得oneArr的一个副本,修改otherArr,不会改变oneArr。

2. concat(),数组的合并。

3.reverse(),数组成员的顺序反转,不会改变原数组,字符串不能“借用”这个方法(大部分数组方法,字符串可以通过call来借用,包括map、join)

4. indexOf,这本身是一个字符串方法,从ES5开始,数组支持该方法

5.五个迭代方法,forEach没有返回值;every和some查询数组中的项是否满足某个条件,返回布尔值;filter对原数组过滤;map返回对应于原数组的新数组。

①every(),对数组的每一项执行函数,对每一项都返回true时,该方法返回true,如果数组有空位,会忽略

②filter(),对数组的每一项执行函数,该方法返回结果为true的项(原数组中的项)组成的新数组。如果数组有空位,会忽略

③forEach(),对数组每一项执行函数,没有返回值。如果数组有空位,会忽略

④map(),对数组的每一项执行函数,返回值为执行函数的结果(不是原数组的项)组成的新数组。如果数组有空位,会忽略,但保留这个空位

⑤some(),对数组的每一项执行函数,对任意一项返回true,则该方法返回true。如果数组有空位,会忽略

6. reduce()和reduceRight()方法,这两个方法的区别只是从数组的哪一头开始遍历数组,其余一样。高级教程98页

7.join(),以传入的字符为间隔,连接数组每一项,返回为字符串,若有空位,视作undefined(undefined和null又会被当做空字符串)


ES6新增方法

1.Array.from(arrayLike,operateFun),该方法用来把类数组对象转换为数组,返回值为这个新数组,后续对新数组的操作不会改变原来的类数组对象

该方法可以把任何具有length属性的对象转化为数组,也就是说,arrayLike参数甚至可以接受字符串作为参数。

operate参数规定转换规则,类似于map方法的函数参数

2.Array.of(),该方法将一组值转换为数组,基本上可以替代数组的构造函数:new Array()或者 Array(),因为之前的数组构造函数,根据参数的个数不同,行为也不相同,在不同浏览器上表现出来的也有差异。Array.of()则直接返回参数值组成的数组。

3.find(fn,bindThis),findIndex(fn,bindThis),找出第一个符合条件的成员、成员位置

4.fill(value,start,end),将数组指定位置的元素填充为value,不传start,end,则全部填充,

5.copyWithin(target,start,end),将start到end的成员复制到target位置

console.log([1,2,3,4,5].copyWithin(3,2));//1,2,3,3,4



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值