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

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

当前回答

Splice和Slice是内置的Javascript命令,而不是特定的AngularJS命令。Slice返回从“start”到“end”说明符之前的数组元素。Splice改变实际的数组,从“start”开始,并保持指定的元素数量。谷歌有很多这方面的信息,只要搜索。

其他回答

这里有一个简单的技巧来记住切片和拼接之间的区别

var a=['j','u','r','g','e','n'];

// array.slice(startIndex, endIndex)
a.slice(2,3);
// => ["r"]

//array.splice(startIndex, deleteCount)
a.splice(2,3);
// => ["r","g","e"]

要记住的技巧:

将“spl”(splice的前3个字母)视为“指定长度”的缩写,即第二个参数应该是长度而不是索引

Splice和Slice是内置的Javascript命令,而不是特定的AngularJS命令。Slice返回从“start”到“end”说明符之前的数组元素。Splice改变实际的数组,从“start”开始,并保持指定的元素数量。谷歌有很多这方面的信息,只要搜索。

这两种方法对初学者来说很容易混淆。我研究了slice和splice的4个关键点。你可以阅读更多关于切片和拼接的细节。

JavaScript切片

Slice只是从数组中返回指定数量的元素。例如,你有一个包含10个元素的数组,你只想从第二个下标中获取3个元素。 它不修改原始数组,而是返回元素的数量。 slice的语法是array。片(startingIndex elementCount)

在JavaScript中拼接

Splice还可以从与切片相同的数组中返回所选元素,但它会修改原始数组。 您可以在特定索引上使用拼接在数组中添加新元素 您可以同时删除指定的元素以及添加新元素。 使用splice的语法是array。splice(startingIndex, removeCounter, newElement(s)[optional])

总结

切片的目的是只从数组中获取选定的元素,而不修改原始数组。 当您希望通过删除元素和添加新元素来修改原始数组时,应该使用拼接。

S LICE =给出数组的一部分&没有分裂原始数组

SP LICE =给出数组的一部分&分裂原始数组

我个人觉得这更容易记住,因为这两个术语总是让我这个网页开发初学者感到困惑。

拼接- 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切片的例子

性能比较

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