Array.prototype.slice & Array.prototype.splice
Introduce
Array.prototype.slice([begin[, end]])
Array.prototype.splice(start[, deleteCount[, item1[, item2[, ...]]]])
summary
Array.prototype.slice([begin[, end]])
Array.prototype.splice(start[, deleteCount[, item1[, item2[, ...]]]])
summary
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