gpt4 book ai didi

javascript - 数组不会 split (使用 splice(0))

转载 作者:行者123 更新时间:2023-12-03 11:10:15 24 4
gpt4 key购买 nike

我正在尝试类似柏林噪声图的东西,但我的数组不会重复!结果,数组值超出了预期值 (>2)。

数组“ma​​p”仅由 1 和 0 组成。

制作 map 的副本(称为缓存),并将数组“缓存”中的值添加到数组“> map ”。

缓存的某些值会多次添加到 map 中。

问题是对“ map ”所做的任何更改似乎都会在“缓存”上重复,非常令人沮丧。我对 javascript 不够熟悉,不知道我做错了什么。

相关代码:

    var map = terrainSeed(); //returns an array of 1's & 0's (random)
map = terrainGen(map, map, 2, 2);

function terrainGen(mapNew, mapOld, x, y)
{
var cache = mapOld.slice(0);
var asdf = 0;

//if(x >=2) if(y >=2)
for(var i = 0; i < cache.length; i++)
{
for(var j = 0; j < cache[i].length; j++)
{
var save = mapNew[i][j];
asdf = cache[(Math.floor(i/x))][(Math.floor(j/y))];
mapNew[i][j] += asdf;

if(mapNew[i][j]>2) alert(save + " + " + asdf + " = " + mapNew[i][j] + " (" + i + ", " + j + ")");
}
}
return mapNew;
}

最佳答案

由于slice正在做浅复制,所以你需要的是深复制。因此,要么使用一些第三方库,如 JQuery、Lo-Dash,要么自己实现。

使用 JQuery

var cache = $.extend(true, [], mapOld);

使用 Lo-Dash

var cache = _.cloneDeep(mapOld);

关于javascript - 数组不会 split (使用 splice(0)),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27630944/

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