之所以为这个API写了这样一篇博文,是因为最近在面试中谈到了这个API,无法完全解释它的用法;一方面是因为熟悉之后觉得这个API真的很灵活很强大,充分体现了javascript的灵活性。所以写这样一篇博文可以让我更深刻的记住这个方法,也希望更多的同仁可以使用这个方法让自己的javascript代码更加简洁高效。MDNWeb文档对Array.prototype.splice()的描述如下:splice(start,deleteCount,item1,item2,...)方法通过删除或替换现有元素和/或添加新元素来更改数组的内容。参数信息如下:1.从什么位置开始修改当前数组,该参数有以下几种情况:0到数组长度-1,即当前数组的任意位置。如果大于数组长度-1,则不会报错,但不会删除当前数组的元素,第二个参数无效。但是,如果此时传入第三个和第四个。..参数,那么这些参数值会被添加到数组的末尾,类似于push方法。如果小于0,如果起始位置为负数,则从数组末尾向后查找,例如-1为最后一个元素,-2为倒数第二个元素。2.deleteCount删除内容的长度,该参数有以下几种情况:0或负数不删除数组元素。如果大于0且小于start指定位置到数组最后一个元素的长度,则删除指定长度的元素。如果大于start指定位置到数组最后一个元素的长度,则删除start位置之后的所有元素,如splice(0,99999999)会清除长度小于99999999的数组。3.在起始位置添加或替换的元素可以是Multiple。对于上面的描述,我们一一验证它的所有用法。删除元素(第二个参数不为0,后面的参数不传入,只删除)letary=['a','b','c','d','e','f'];ary.splice(1,1);//从第二个位置删除一个元素console.log(ary);//['a','c','d','e','f']设ary=['a','b','c','d','e','f'];ary.splice(1,2);//从第二个位置删除两个元素console.log(ary);//['a','d','e','f']letary=['a','b','c','d','e','f'];ary.splice(-2,1);//删除倒数第二个元素'e'console.log(ary);//['a','b','c','d','f']letary=['a','b','c','d','e','F'];阿里。拼接(0,ary。长度);//删除所有元素console.log(ary);//[]添加元素(第二个参数为0,如果后面的参数不为空,只增不删)letary=['a','b','c','d','e','f'];ary.splice(ary.length,0,'x');//在数组末尾追加一个元素console.log(ary);//['a','b','c','d','e','f','x']letary=['a','b','c','d','e','f'];ary.splice(1,0,'x');//在数组的第二个元素之前插入一个元素console.log(ary);//['a','x','b','c','d','e','f']letary=['a','b','c','d','e','f'];阿里。拼接(-2、0、'x');//在数组的倒数第二个元素之前插入一个元素console.log(ary);//['a','b','c','d','x','e','f']letary=['a','b','c'];letary2=['d','e','f']ary.splice(ary.length,0,...ary2);//数组拼接console.log(ary);//['a','b','c','d','e','f']更新/替换元素(第二个参数不为0,后续参数不为空。它这里要注意,传入的替换元素个数可以等于前端的长度,也可以不等于前端的长度)替换元素实际上是先删除再插入,所以一定要看懂传入参数的含义letary=['a','b','c','d','e','f'];ary.splice(1,1,'x');//将第二个元素'b'替换为'x'(长度和传递给替换元素的个数为一个)console.log(ary);//['a','x','c','d','e','f']letary=['a','b','c','d','e','f'];ary.splice(1,2,'x');//删除第二个和第三个元素'b''c',插入一个元素'x'(长度大于传入的替换元素个数)console.log(ary);//['a','x','d','e','f']letary=['a','b','c','d','e','f'];ary.splice(1,2,'x','y','z');//删除第二个和第三个元素'b''c',插入'x','y','z'三个元素(长度小于传入的替换元素个数)console.log(ary);//['a','x','y','z','d','e','f']这些是我目前总结的常用拼接用法,如果有更多多种使用方法,欢迎留言讨论
