工作了很久始终对这4个用法处于混淆状态,今天写个帖子来警示下自己
// slice(start,end),从start值开始截取到end前的元素组成新的数组,不改变原数组 // slice(index)从index下标值开始截取,组成新的数组不改变原数组 var arr=[0,1,2,3,4,5,6]; var a=arr.slice(0,4);//0123 var b=arr.slice(3);//3456 console.log(a);//0123 console.log(b);//3456 console.log(arr);//0123456 // 当传入一个数值且为负数时length会与这个数值相加然后再截取,当该数值的绝对值大于length时会返回全部 // 当传入的值是一正一负时,此时的length不再是arr的length而是新数组的length,此时length同样与负数相加,再截取值 // 当传入的值时一正一副且第二个值的绝对值大于或等于length的个数则返回空数组 var c=arr.slice(-5); console.log(c);//23456 var d=arr.slice(-8); console.log(d)//0123456 var e=arr.slice(2,-2); console.log(e);//234 var f=arr.slice(2,-5); console.log(f);//空值 var arr1=[0,1,2,3,4,5,6]; // splice(index,length,item1,item2)从第index开始选择length个元素进行删除,item1,item2放入删除的位置 // 改变了原数组使原数组一目前的方法进行排列,操作过后的值为删除掉的值 var g=arr1.splice(2,2,8,8); console.log(g)//23 console.log(arr1);//0188456 // split(separator,limit) 不改变原数组组成新的字符串,以separator分割字符串对目前字符串取limit个组成新的数组 var str="abc丰城市123"; var h=str.split("市",2); console.log(h); console.log(str); var arr2=[0,1,2]; // unshift(item1,item2,...),unshift向原数组开头进行追加元素,改变原数组 var i=arr2.unshift(3,4,"丰城市"); console.log(i);//6 得到的是数组arr2新追加后的length console.log(arr2);//原数组已改变,改变为新追加后的数组