簡體   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