工作了很久始终对这三个用法处于混淆状态,今天写个帖子来警示下自己
// slice(index,length),从第index值截取length个元素组成新的数组,不改变原数组 // slice(index)从index下标值开始截取,组成新的数组不改变原数组 var arr=[0,1,2,3,4,5,6]; var a=arr.slice(0,4);//01234 var b=arr.slice(3);//3456 console.log(a);//01234 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);
//slice(index,length),从第index值截取length个元素组成新的数组,不改变原数组//slice(index)从index下标值开始截取,组成新的数组不改变原数组var arr=[0,1,2,3,4,5,6];var a=arr.slice(0,4);//01234var b=arr.slice(3);//3456console.log(a);//01234console.log(b);//3456console.log(arr);//0123456//当传入一个数值且为负数时length会与这个数值相加然后再截取,当该数值的绝对值大于length时会返回全部//当传入的值是一正一负时,此时的length不再是arr的length而是新数组的length,此时length同样与负数相加,再截取值//当传入的值时一正一副且第二个值的绝对值大于或等于length的个数则返回空数组var c=arr.slice(-5);console.log(c);//23456var d=arr.slice(-8);console.log(d)//0123456var e=arr.slice(2,-2);console.log(e);//234var 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)//23console.log(arr1);//0188456//split(separator,limit) 不改变原数组组成新的字符串,以separator分割字符串对目前字符串取limit个组成新的数组var str="abc丰城市123";var h=str.split("市",2);console.log(h);console.log(str);