繁体   English   中英

更改一个变量会以相同的方式更改所有其他变量

[英]Changing one variable changes all others defined the same way

我有一个JavaScript代码,它有4个3维数组,每个数组都是500x500x220维度(最后一个维度中的所有220个值都很少使用)。 由于这个大尺寸,定义一个这样的数组然后从那个定义四个数组要快得多。 问题是,当我在一个数组中更改一个值时,它也会在其他数组中发生变化。 这是我的代码:

<script type="text/javascript">
var content = new Array();
var signs = new Array();
var sens = new Array();
var props = new Array();
var ini = new Array();
for(i = 0; i < 500; i++){
        ini[i] = new Array();
        for(j = 0; j < 500; j++){
                    ini[i][j] = new Array();
        }
}
content = ini;
signs = ini;
sens = ini;
props = ini;
function f(){
        alert(signs[3][3][2]);            //Returns undefined
        content[3][3][2] = 2;
        alert(signs[3][3][2]);            //Returns 2
}
f();
</script>

请注意, f()函数只应更改content数组,但它也会更改signs数组。 为什么会这样做,我该如何解决它?

如果它有所作为,我正在使用HTA。

这篇关于复制嵌套数组的帖子的帮助下。

你的代码:

content = ini;
signs = ini;
sens = ini;
props = ini;

使数组指向ini 这就是为什么对content[0]任何引用,例如,也是对signs[0]ini[0]的引用。

使用:

function copy(arr){
    var new_arr = arr.slice(0);
    for(var i = new_arr.length; i--;)
        if(new_arr[i] instanceof Array)
            new_arr[i] = copy(new_arr[i]);
    return new_arr;
}

复制数组:

content = copy(ini);
signs = copy(ini);
sens = copy(ini);
props = copy(ini);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM