slice是指定在一个数组中的元素创建一个新的数组,即原数组不会变.
根据规范,slice 需要两个参数,起点和终点。它会返回一个包含了从起点开始,到终点之前之间所有元素的新数组。
'abc'.slice(1,2) // "b"
[14, 3, 77].slice(1, 2) // [3]
需要特别注意的是它并不会修改原数组。
下面的代码段描述了这个行为,x 的值没有变,y 则是被截取的部分。
var x = [14, 3, 77];
var y = x.slice(1, 2);
console.log(x); // [14, 3, 77]
console.log(y); // [3]
除此之外,splice 还会改变原数组。
push(末尾添加元素) pop(删除并返回数组的最后一个元素) unshift(开头添加元素,并返回新长度)
shift(删除并返回数组的第一个元素)
可见添加元素则返回添加后长度, 删除元素则返回被删的那个元素。修改自身的有: splice, pop, push, shift, unshift, sort, reverse
不修改自身的: slice, concat, join
splice删除:color.splice(1,2) (删除color中的1、2两项);
splice插入:color.splice(1,0,'brown','pink') (在color键值为1的元素前插入两个值);
splice替换:color.splice(1,2,'brown','pink') (在color中替换1、2元素);
var colors = ["red", "green", "blue"];
var removed = colors.splice(0,1); //删除第一项
alert(colors); //green,blue
alert(removed); //red,返回数组中值包含一项
removed = colors.splice(1, 0, "yellow", "orange"); //从位置1开始插入两项
alert(colors); //green,yellow,organge,blue
alert(removed); //返回的是一个空数组
removed = colors.splice(1, 1, "red", "purple"); //插入两项,删除一项
alert(colors); //green,red,purple,orange,blue
alert(remove); //yellow, 返回的数组中只包含一项