拼接和切片的区别是什么?

const array = [1, 2, 3, 4, 5];
array.splice(index, 1);
array.slice(index, 1);

当前回答

Splice()改变原始数组,而slice()不会,但它们都返回数组对象。

请看下面的例子:

var array=[1,2,3,4,5];
console.log(array.splice(2));

这将返回[3,4,5]。原始数组受到影响,导致数组为[1,2]。

var array=[1,2,3,4,5]
console.log(array.slice(2));

这将返回[3,4,5]。原始数组不受影响,导致数组为[1,2,3,4,5]。

下面是简单的小提琴,它证实了这一点:

/ /拼接 数组var =[1、2、3、4、5); console.log (array.splice (2)); / /片 var array2 =[1、2、3、4、5) console.log (array2.slice (2)); console.log(“——后——”); console.log(数组); console.log (array2);

其他回答

JavaScript数组拼接()方法示例

从索引1中删除2个元素

var arr =“1”,“2”,“三”、“四”、“5”、“6”、“7”、“八”,“九”,“十”); arr.splice(1、2); Console.log (arr);

例2通过tutsmake从索引0 JavaScript中添加新元素

var arr =“1”,“2”,“三”、“四”、“5”、“6”、“7”、“八”,“九”,“十”); arr.splice (0, 0, 0); Console.log (arr);

示例3:在数组JavaScript中添加和删除元素

var months = ['Jan', 'March', 'April', 'June']; 个月。splice(1,0, 'Feb');//添加索引1 console.log(个月); 个月。splice(4,1, 'May');//替换索引4的1个元素 console.log(个月);

https://www.tutsmake.com/javascript-array-splice-method-by-example/

拼接- MDN参考- ECMA-262规范

语法 数组中。拼接(item1[[开始,deleteCount[第二条 [, ...]]]])

参数

开始:必需的。初始索引。 如果start为负,则将其视为“Math.max((数组。长度+ start), 0)”,按照规范(下面提供的示例)有效地从数组的末尾开始。 deleteCount:可选的。要删除的元素数量(如果没有提供,则全部从开始删除)。 Item1, item2,…:可选的。要从起始索引添加到数组的元素。

返回:删除元素的数组(如果没有删除则为空数组)

改变原始数组:是的

例子:

Const数组= [1,2,3,4,5]; //删除第一个元素 console.log('已删除的元素:',数组。Splice(0,1), '突变数组:',数组); //元素删除:[1]mutated array: [2,3,4,5] // array = [2,3,4,5] //删除最后一个元素start ->数组。长度+起始= 3) console.log('已删除的元素:',数组。Splice(- 1,1), '突变数组:',数组); //元素删除:[5]mutated array: [2,3,4]

更多的例子在MDN拼接的例子


切片- MDN参考- ECMA-262规范

语法 数组中。片([[,]]开始) 参数

开始:可选的。初始索引(默认为0)。 如果begin为负数,则将其处理为“Math.max((数组。长度+ begin), 0)”按照规范(下面提供的示例)有效地从数组的末尾开始。 结束:可选的。抽取的最后一个索引,但不包括(default array.length)。如果end为负数,则将其处理为“Math.max((数组。长度+ begin),0)”按照规范(下面提供的示例)有效地从数组的末尾开始。

返回:包含已提取元素的数组。

突变原:没有

例子:

Const数组= [1,2,3,4,5]; //提取第一个元素 console.log('提取的元素:',数组。Slice (0,1), 'array:', array); //元素提取:[1]array: [1,2,3,4,5] //提取最后一个元素start ->数组。长度+起始= 4) console.log('提取的元素:',array.slice(-1), 'array:', array); //元素提取:[5]array: [1,2,3,4,5]

更多的例子在MDN切片的例子

性能比较

不要认为这是绝对的真理,因为根据不同的场景,一个可能比另一个表现更好。 性能测试

Slice()和Splice() javascript内置函数之间的区别是, Slice返回删除的项,但没有改变原始数组; 就像,

        // (original Array)
        let array=[1,2,3,4,5] 
        let index= array.indexOf(4)
         // index=3
        let result=array.slice(index)
        // result=4  
        // after slicing=>  array =[1,2,3,4,5]  (same as original array)

但在splice()情况下,它会影响原始数组;就像,

         // (original Array)
        let array=[1,2,3,4,5] 
        let index= array.indexOf(4)
         // index=3
        let result=array.splice(index)
        // result=[4,5]  
        // after splicing array =[1,2,3]  (splicing affects original array)

Splice()改变原始数组,而slice()不会,但它们都返回数组对象。

请看下面的例子:

var array=[1,2,3,4,5];
console.log(array.splice(2));

这将返回[3,4,5]。原始数组受到影响,导致数组为[1,2]。

var array=[1,2,3,4,5]
console.log(array.slice(2));

这将返回[3,4,5]。原始数组不受影响,导致数组为[1,2,3,4,5]。

下面是简单的小提琴,它证实了这一点:

/ /拼接 数组var =[1、2、3、4、5); console.log (array.splice (2)); / /片 var array2 =[1、2、3、4、5) console.log (array2.slice (2)); console.log(“——后——”); console.log(数组); console.log (array2);

有3个不同点:

Splice将从原始数组中删除所选元素,并将它们作为一个新数组返回-请注意,原始数组将不再拥有它们-。Slice将使用所选元素创建一个新数组,而不会影响原来的数组。 Splice接收起始索引和从该点移除多少元素作为参数。Slice接收2个索引,开始和结束。 Splice可用于通过传递可选参数在数组中的特定位置添加元素。