JavaScript 数组拼接与切片

IT技术 javascript
2021-03-15 22:22:44

splice和 和有什么不一样slice

$scope.participantForms.splice(index, 1);
$scope.participantForms.slice(index, 1);
6个回答

splice()更改原始数组,而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);

splice或像我倾向于说的切片p lunder 来自调用者的值”
2021-04-16 22:22:44
观察 slice() 数组方法可用于通过不传递任何参数来复制数组也很重要 arr1 = arr0.slice()
2021-04-24 22:22:44
.splice()非常直观的,我只花了年龄试图找出为什么原来的数组引用正在返回undefined,直到我发现了这个线索。
2021-04-25 22:22:44
你可以把它想象成splice一个政府从你那里收税。slice更像是一个复制粘贴的家伙。
2021-05-04 22:22:44

Splice 和 Slice 都是 Javascript 数组函数。

拼接与切片

  1. splice() 方法返回数组中删除的项, slice() 方法返回数组中的选定元素,作为新的数组对象。

  2. splice() 方法更改原始数组,而 slice() 方法不会更改原始数组。

  3. 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]

尽管这两个函数执行完全不同的任务,但与 不同的是 splice(x,y)slice(x,y)第二个参数y不是从 x 的位置开始计算,而是从数组的第一个元素开始计算。
2021-04-27 22:22:44
我注意到的另一件事是:array.slice(index, count)如果您使用array.slice((index, count)),您将在“切片”后获得剩余部分。试试看!
2021-05-15 22:22:44

S LICE = 给出数组的一部分 &拆分原始数组

SP LICE = 给出数组的一部分和SP点亮原始数组

我个人发现这更容易记住,因为这两个术语总是让我作为 Web 开发的初学者感到困惑。

感谢这一点,我永远不会忘记哪个会改变原始数组。
2021-04-28 22:22:44
非常聪明!感谢分享!
2021-05-02 22:22:44
拼接 -> ctrl+X + ctrl+V 切片 -> ctrl +C
2021-05-02 22:22:44

这是一个简单的技巧来记住slicevs之间的区别splice

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)“指定长度”的缩写,第二个参数应该是长度而不是索引

也可以将 splice 视为 split(生成 2 个数组)+ slice
2021-04-19 22:22:44
这不仅仅是您如何指定参数。其中之一(拼接)修改基本数组,而另一个不修改。
2021-05-07 22:22:44

所述切片()方法返回的阵列的一部分的副本到一个新的数组对象。

$scope.participantForms.slice(index, 1);

这并改变participantForms阵列,但返回包含在找到的单个元素的新阵列index的原始数组中的位置。

拼接()方法改变阵列的通过去除现有元件和/或添加新元素的内容。

$scope.participantForms.splice(index, 1);

这将从participantFormsindex位置数组中删除一个元素

这些是 Javascript 原生函数,AngularJS 与它们无关。

为什么这不是最佳答案?
2021-04-22 22:22:44
任何人都可以举出有用的例子,每个例子最理想的是什么?喜欢使用 splice 还是 slice 的情况?
2021-05-02 22:22:44
这个答案部分不正确。对于splice第二个 arg 是返回数组中的元素计数,但对于slice第二个 arg 是要返回的最后一个元素的索引 + 1。 slice(index,1)不一定返回一个从 开始的元素的数组index[1,2,3,4,5].slice(0,1)返回[1][1,2,3,4,5].slice(3,1)返回[]因为1被解释为final index +1所以final index = 0但这是在start index = 3返回空数组之前
2021-05-04 22:22:44