splice
和slice
之间的区别是什么?
$scope.participantForms.splice(index, 1);
$scope.participantForms.slice(index, 1);
答案 0 :(得分:119)
slice()
更改了原始数组,而var array=[1,2,3,4,5];
console.log(array.splice(2));
没有更改,但它们都返回数组对象。
请参阅以下示例:
[3,4,5]
这将返回array
。 原始数据受影响,导致[1,2]
为var array=[1,2,3,4,5]
console.log(array.slice(2));
。
[3,4,5]
这将返回array
。 原始数组不受影响,导致[1,2,3,4,5]
为//splice
var array=[1,2,3,4,5];
console.log(array.splice(2));
//slice
var array2=[1,2,3,4,5]
console.log(array2.slice(2));
console.log("----after-----");
console.log(array);
console.log(array2);
。
下面是简单的小提琴,证实了这一点:
{{1}}
答案 1 :(得分:38)
Splice和Slice都是Javascript数组函数。
Splice vs Slice
splice()方法返回数组中已删除的项,slice()方法返回数组中的选定元素,作为新的数组对象。
splice()方法更改原始数组,而slice()方法不会更改原始数组。
splice()方法可以使用n个参数,slice()方法可以使用2个参数。
与示例拼接
参数1:索引,必需。一个整数,指定添加/删除项目的位置,使用负值指定数组末尾的位置。
参数2:可选。要删除的项目数。如果设置为0(零),则不会删除任何项目。如果没有通过,将删除所提供索引中的所有项目。
参数3 ... n:可选。要添加到数组中的新项目。
var array=[1,2,3,4,5];
console.log(array.splice(2));
// shows [3, 4, 5], returned removed item(s) as a new array object.
console.log(array);
// shows [1, 2], original array altered.
var array2=[6,7,8,9,0];
console.log(array2.splice(2,1));
// shows [8]
console.log(array2.splice(2,0));
//shows [] , as no item(s) removed.
console.log(array2);
// shows [6,7,9,0]

使用示例切片
参数1:必需。一个整数,指定开始选择的位置(第一个元素的索引为0)。使用负数从数组的末尾进行选择。
参数2:可选。一个整数,指定结束选择但不包括的位置。如果省略,将选择从数组的起始位置到结尾的所有元素。使用负数从数组的末尾进行选择。
var array=[1,2,3,4,5]
console.log(array.slice(2));
// shows [3, 4, 5], returned selected element(s).
console.log(array.slice(-2));
// shows [4, 5], returned selected element(s).
console.log(array);
// shows [1, 2, 3, 4, 5], original array remains intact.
var array2=[6,7,8,9,0];
console.log(array2.slice(2,4));
// shows [8, 9]
console.log(array2.slice(-2,4));
// shows [9]
console.log(array2.slice(-3,-1));
// shows [8, 9]
console.log(array2);
// shows [6, 7, 8, 9, 0]

答案 2 :(得分:15)
slice()方法将数组的一部分副本返回到新的数组对象中。
$scope.participantForms.slice(index, 1);
NOT 更改participantForms
数组但返回一个新数组,其中包含在原始数组中index
位置找到的单个元素。
splice()方法通过删除现有元素和/或添加新元素来更改数组的内容。
$scope.participantForms.splice(index, 1);
这会从participantForms
位置的index
数组中删除一个元素。
这些是Javascript本机函数,AngularJS与它们无关。
答案 3 :(得分:12)
splice()
方法返回数组中已删除的项目。
slice()
方法将数组中选定的元素作为新的数组对象返回。
splice()
方法会更改原始数组,而slice()
方法不会更改原始数组。
Splice()
方法可以使用n个参数:
参数1:索引,必需。
参数2:可选。要删除的项目数。如果设置为0(零),则不会删除任何项目。如果未通过,则将从提供的索引中删除所有项目。
参数3..n:可选。新项目要添加到数组中。
slice()
方法可以使用2个参数:
参数1:必需。一个整数,指定从何处开始选择(第一个元素的索引为0)。使用负数从数组末尾进行选择。
参数2:可选。一个整数,指定结束选择的位置。如果省略,将从开始位置到数组结尾的所有元素都将被选中。使用负数从数组末尾进行选择。
答案 4 :(得分:10)
S LICE =给出数组的一部分&否拆分原始数组
SP LICE =给出阵列的一部分并 SP 保留原始阵列
我个人觉得这很容易记住,因为这两个词总是让我作为Web开发的初学者感到困惑。
答案 5 :(得分:9)
语法
array.splice(start[, deleteCount[, item1[, item2[, ...]]]])
参数
start
:必填。初始索引。start
为负数,则从"Math.max((array.length + start), 0)"
的末尾开始,根据规范(下面提供的示例),它被视为array
。 deleteCount
:可选。要删除的元素数(如果未提供,则全部从start
中删除)。 item1, item2, ...
:可选。要从start
索引添加到数组的元素。 返回:具有已删除元素的数组(如果未删除则为空数组)
更改原始数组:是
const array = [1,2,3,4,5];
// Remove first element
console.log('Elements deleted:', array.splice(0, 1), 'mutated array:', array);
// Elements deleted: [ 1 ] mutated array: [ 2, 3, 4, 5 ]
// array = [ 2, 3, 4, 5]
// Remove last element (start -> array.length+start = 3)
console.log('Elements deleted:', array.splice(-1, 1), 'mutated array:', array);
// Elements deleted: [ 5 ] mutated array: [ 2, 3, 4 ]
中的更多示例
语法
array.slice([begin[, end]])
参数
begin
:可选。初始索引(默认为0)。begin
为负数,则从"Math.max((array.length + begin), 0)"
的末尾开始,根据规范(下面提供的示例),它被视为array
。 end
:可选。最后提取的索引,但不包括(默认array.length)。如果end
为负数,则从"Math.max((array.length + begin),0)"
的末尾开始,根据规范(下面提供的示例),它被视为array
。 返回:包含提取的元素的数组。
更改原始:否
const array = [1,2,3,4,5];
// Extract first element
console.log('Elements extracted:', array.slice(0, 1), 'array:', array);
// Elements extracted: [ 1 ] array: [ 1, 2, 3, 4, 5 ]
// Extract last element (start -> array.length+start = 4)
console.log('Elements extracted:', array.slice(-1), 'array:', array);
// Elements extracted: [ 5 ] array: [ 1, 2, 3, 4, 5 ]
中的更多示例
请不要将此视为绝对真理,因为根据每种情况,一个方案可能比另一个方案更为出色。
Performance test
答案 6 :(得分:3)
Splice和Slice是内置的Javascript命令 - 而不是AngularJS命令。 Slice返回" start"中的数组元素。直到"结束"符。 Splice改变了实际的数组,并从" start"开始。并保持指定的元素数量。谷歌有很多信息,只需搜索。
答案 7 :(得分:3)
答案 8 :(得分:2)
index = 2
//splice & will modify the origin array
const arr1 = [1,2,3,4,5];
//slice & won't modify the origin array
const arr2 = [1,2,3,4,5]
console.log("----before-----");
console.log(arr1.splice(2, 1));
console.log(arr2.slice(2, 1));
console.log("----after-----");
console.log(arr1);
console.log(arr2);
答案 9 :(得分:2)
另一个例子:
[2,4,8].splice(1, 2) -> returns [4, 8], original array is [2]
[2,4,8].slice(1, 2) -> returns 4, original array is [2,4,8]
答案 10 :(得分:2)
slice不会更改原始数组,它会返回新数组,但是splice会更改原始数组。
example: var arr = [1,2,3,4,5,6,7,8];
arr.slice(1,3); // output [2,3] and original array remain same.
arr.splice(1,3); // output [2,3,4] and original array changed to [1,5,6,7,8].
splice方法的第二个参数不同于slice方法。拼接中的第二个参数表示要删除的元素数,而在切片中的第二个参数表示结束索引。
arr.splice(-3,-1); // output [] second argument value should be greater then
0.
arr.splice(-3,-1); // output [6,7] index in minus represent start from last.
-1表示最后一个元素,因此它从-3到-1开始。 以上是拼接和切片方法的主要区别。
答案 11 :(得分:1)
这是记住切片与拼接之间区别的简单技巧
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"]
Trick to remember:
认为 "spl" (first 3 letters of splice)
是“指定长度”的缩写,第二个参数应该是长度而不是索引
答案 12 :(得分:1)
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
// after splicing array =[1,2,3,5] (splicing affects original array)
答案 13 :(得分:0)
//splice
var array=[1,2,3,4,5];
console.log(array.splice(2));
//slice
var array2=[1,2,3,4,5]
console.log(array2.slice(2));
console.log("----after-----");
console.log(array);
console.log(array2);
答案 14 :(得分:0)
JavaScript数组splice()示例方法
tutsmake的Example1-从索引2中删除2个元素
var arr = [ "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten" ];
arr.splice(1,2);
console.log( arr );
Example-2通过tutsmake –从索引0 JavaScript添加新元素
var arr = [ "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten" ];
arr.splice(0,0,"zero");
console.log( arr );
tutsmake的Example-3 –在数组JavaScript中添加和删除元素
var months = ['Jan', 'March', 'April', 'June'];
months.splice(1, 0, 'Feb'); // add at index 1
console.log(months);
months.splice(4, 1, 'May'); // replaces 1 element at index 4
console.log(months);
https://www.tutsmake.com/javascript-array-splice-method-by-example/
答案 15 :(得分:0)
两者都返回相同的答案,但是: