在同一数组中推送数组会产生循环引用

时间:2018-10-27 10:40:22

标签: javascript arrays circular-reference

我正在尝试将同一数组推入array。为什么要创建循环引用?

var arr =[4,4];
arr.push(arr);
console.log(arr)
// Expected output = [4,4,[4,4]]
// actual output = [4,4,[4,4,[4,4,[...]]]

2 个答案:

答案 0 :(得分:0)

因为第一个元素是数组,所以元素的第一个元素是对外部数组的引用,依此类推。

您正在寻找Array#slice

const arr1 = [4, 4]
arr1.push (arr1.slice (0)) // <-- slice creates a new array
                         //     whose members are the same as
                         //     arr1

console.log (arr1)

扩展语法也可以帮助解决此问题:

const arr1 = [4, 4]
arr1.push ([...arr1]) // spread syntax
console.log (arr1)

答案 1 :(得分:0)

您要推送相同的数组。一种选择是,您可以使用spread syntax来迭代每个数组元素并构造一个新的数组元素。

赞:

var arr = [4, 4];
arr.push([...arr]);
console.log(arr)

文档:spread syntax