Array.prototype.slice & Array.prototype.splice

TOC

Introduce

splice() 方法与 slice() 方法的作用是不同的,splice() 方法会直接对数组进行修改。

Array.prototype.slice([begin[, end]])

var ids = [{id: 1}, {id: 2}, {id: 3}, {id: 4}]
var index = ids.findIndex(v => v.id == 2);
console.log(index) // 1

var newIds = ids.slice(2);
console.log(ids, newIds); //[{id: 1}, {id: 2}, {id: 3}, {id: 4}], [{id: 3}, {id: 4}]

var newIds2 = ids.splice(2);
console.log(ids, newIds2); // [{id: 1}, {id: 2}], [{id: 3}, {id: 4}]

不会修改原始数组
slice(begin, end) 方法返回一个从开始到结束(不包括结束)选择的数组的一部分浅拷贝到一个新数组对象。且原始数组不会被修改。

Array.prototype.splice(start[, deleteCount[, item1[, item2[, ...]]]])

参数

会修改原始数组
返回的值是一个被删除的项的数组

var array1 = [{id: 0}, {id: 1}, {id: 2}, {id: 3}]
var deleted1 = array1.splice(0, 1)

// deleted1 value is : [{id: 0}]
// array1 now is [{id: 1}, {id: 2}, {id: 3}]
console.log(deleted1, array1);

// deleted2 value is : [{id: 1}]
// array1 now is [{id: 5, }, {id: 2}, {id: 3}]
var deleted2 = array1.splice(0, 1, {id: 5});
console.log(deleted2, array1); 

1 从start位置开始删除[start,end]的元素。
array.splice(start)
2 从start位置开始删除[start,Count]的元素。
array.splice(start, deleteCount)
3 从start位置开始添加item1, item2, ...元素。
array.splice(start, 0, item1, item2, ...)

summary

在你需要修改原始数组的时候使用 splice
使用 splice不仅仅可以删除东西
还可以在某一位置批量插入项

在你需要从原始数组中提取出部分,而不动它的情况下,使用 slice

posted @ 2020-12-01 14:28  我听不见  阅读(90)  评论(0编辑  收藏  举报