gpt4 book ai didi

当我将 Javascript 数组推送到另一个数组时,它会更改值

转载 作者:行者123 更新时间:2023-11-28 03:53:55 25 4
gpt4 key购买 nike

我的代码中发生了一件奇怪的事情,我不知道原因。

我有 2 个数组。一种是非常大的数组(长 40,000 个元素),一种是空数组。

我想将大数组推送到空数组上,如下所示:

emptyArray.push(largeArray);

这在大多数情况下都按预期工作......但是当我进行推送时,一些大数组值就会消失。如果之前是:

大数组 = [0, 1, 2, 3, 4, 5, .....,40000];

现在当我console.log它时,它显示:

largeArray = [0,1,3,4,5,....,40000];

2 就消失了。我通过使用断点仔细检查了 2 在推送之前是否存在,并且在数组被推送之前,所有它的值都在那里。然而,当数组被推送时,有些就消失了。

有什么想法吗?我在 Firefox 和 Chrome 上测试了我的项目,两者都显示相同的行为。而且这只是普通的 JavaScript 数组,而不是类型化数组或任何东西。

编辑:

评论中有些人询问代码背后的更多细节。所以这是一个更彻底的解释。

我在 Canvas 上绘制图像,然后获取图像数据。我只想使用红色 channel ,因此我创建了一个新数组,如下所示:

var imgData = ctx.getImageData(0, 0, width, height);

var imgDataRed = [];
for (i = 0; i < imgData .length; i+=4) {
imgDataRed[i] = imgPixels[i / 4];
}

然后我想将这个 imgDataRed 数组推送到一个空的存储数组上。所以我运行:

var storageArr = [];
storageArr.push(imgDataRed);

希望有帮助。

最佳答案

如果您正在使用大数组,您应该查看类似 immutable.js 的库。 .

这是一个例子:

const { List } = require('immutable');

var arr1 = [];

for(var i=0; i<40000; i++){
arr1.push(i);
}

var list1 = List(arr1);


console.log(list1.count()); // outputs 40000

关于当我将 Javascript 数组推送到另一个数组时,它会更改值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47738920/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com