JS:简单的数字排列和Array.slice()之间的区别

问题描述:

我只想问什么是正常的数字阵列之间的区别: [1,2,3,4,5,6][1,2,3,4,5,6].slice();JS:简单的数字排列和Array.slice()之间的区别

console.log([1,2,3,4,5,6].slice()); 
 
console.log([1,2,3,4,5,6]);

结果似乎是一样,但有些变化。我想知道它究竟是什么。

+1

'.slice()'用于使所述阵列的一个副本。 – Barmar

+0

@Barmar你能做出完整的答案吗?我会将它标记为最好的。 – Patrickkx

+0

'.slice()'用于制作不引用原始数组的数组的浅层克隆。 – Redu

使用slice()(无参数)函数可以创建原始数组的浅表副本。

var arr = [1,2,3,4,5,6]; 
arr === arr; // true 
arr === arr.slice(); // false 

当你想克隆一些数组,对它做一些操作但不能修改原来的数组时,它可能会有帮助。

+0

似乎你是对的。谢谢!它解释了一切。 – Patrickkx

slice()方法将数组的一部分的浅表副本返回到从开始到结束(未包含结束)中选择的新数组对象中。原始数组不会被修改。您也可以使用.slice()而不是.slice(begin, end)进行精确复制。

var a = ["zero", "one", "two", "three"]; 
var sliced = a.slice(1,3); 

console.log(a);  // [ "zero", "one", "two", "three" ] 
console.log(sliced); // [ "one", "two" ] 

slice返回数组的一部分的浅拷贝到一个新的数组 所以,如果你通过begin & end它会返回一个新的数组 例如

[1,2,3,4,5,6].slice(1,3)将返回[2,3]

它将返回一个新数组,其中包含给定起始索引中的元素,直到指定的结束索引

console.log([1,2,3,4,5,6].slice(2)); 

// returns 1,2 

console.log([1,2,3,4,5,6].slice(0,3)); 

// returns 1,2,3 

console.log([1,2,3,4,5,6].slice(2,4)); 

// returns 3,4 

https://ariya.io/2014/02/javascript-array-slice-vs-splice