对于数组的操作:splice与slice
<!--splice: 删除并 / 或添加数组元素-->
特点:直接改变原数组,并返回被删除后的对象.
语法 / 用法:array.splice(start);
array.splice(start,deleteCount);
array.splice(start,deleteCount,item1,item2...);
1、start:为数组索引,means从这个索引开始(包含这个索引)删除数组内的元素。如果没有deleteCount,就代表删除索引之后所有的元素。
2、deleteCount: 为总共删除几个元素,means从start开始(包含Start)一共删除多少个元素。
3、item1,item2...: 为需要添加进数组的新元素。means先从Start开始删除,删除deleteCount(没有则删除Start及Start后所有的元素)个元素后,再新增item1.item2...等指定的新元素。
eg: let array = [ h, e, l, l, o];
let arr = array.splice(1); -> array = [ h ]; arr = [ e, l, l, o ]; ( 从索引为1的值开始删除,删除到最后一个元素)
let ar = array.splice(1,1); -> array = [ h, l, l, o ]; arr = [ e ]; (从索引为1的值开始删除,并且总共只删除一个元素)
let a = array.splice(1,1,'hi'); -> array = [ h, hi, l, l, o]; arr = [ e ]; (从索引为1的值开始删除,总共只删除一个元素,并且在索引为1的位置插入一个字符串'hi')
<!--slice: 把从开始不包括结束的元素拷贝至一个新的数组对象-->
特点:不改变原数组,返回操作后取得的对象.
语法 / 用法 :array.slice();
array.slice(begin);
array.slice(begin,end);
1、begin为从索引begin开始取数。没有end就取到数组末尾。没有begin也没有end,就从0取到数组末尾。
2、有begin,也有end的话,包含begin开始取数,不包含end
eg: let array = [ h, e, l, l, o];
let arr = array.slice(); -> array = [ h, e, l, l, o]; arr = [ h, e, l, l, o];
let ar = array.slice(1,1); -> array = [ h, e, l, l, o]; arr = [ ]; ( 从索引1开始,但是又不包括索引1,所以取得的值为空数组 )
let a = array.slice(1,2); -> array = [ h, e, l, l, o]; arr = [ e ]; ( 从索引1开始,包括索引1,取到索引为2的位置,但是不包括索引为2的值)
个人认为MDN上讲的非常详细:
splice -> https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/splice
slice -> https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/slice