2016-04-22 172 views
0

我知道这些问题的标题似乎有点奇怪,但我正在寻找的答案是关于这个标题。比方说,我有数组数组,并希望根据另一个数组元素进行更新。例如;根据数组元素更新矩阵

数组阵列;

var arrayOfArrays = [ 
          [ 
           [false, false, false, false], 
           [false, false, false, false], 
           [false, false, false, false], 
           [false, false, false, false], 
           [false, false, false, false], 
           [false, false, false, false], 
           [false, false, false, false], 
           [false, false, false, false], 
           [false, false, false, false], 
           [false, false, false, false], 
           [false, false, false, false], 
           [false, false, false, false], 
           [false, false, false, false], 
           [false, false, false, false], 
           [false, false, false, false], 
           [false, false, false, false], 
           [false, false, false, false], 
           [false, false, false, false], 
           [false, false, false, false], 
           [false, false, false, false], 
           [false, false, false, false], 
           [false, false, false, false], 
           [false, false, false, false], 
           [false, false, false, false], 
          ], 
          [ 
           [false, false, false, false], 
           [false, false, false, false], 
           [false, false, false, false], 
           [false, false, false, false], 
           [false, false, false, false], 
           [false, false, false, false], 
           [false, false, false, false], 
           [false, false, false, false], 
           [false, false, false, false], 
           [false, false, false, false], 
           [false, false, false, false], 
           [false, false, false, false], 
           [false, false, false, false], 
           [false, false, false, false], 
           [false, false, false, false], 
           [false, false, false, false], 
           [false, false, false, false], 
           [false, false, false, false], 
           [false, false, false, false], 
           [false, false, false, false], 
           [false, false, false, false], 
           [false, false, false, false], 
           [false, false, false, false], 
           [false, false, false, false], 
          ] 

    ] 

和我有这样

var elementArray = ["0-7-3","2-10-0","2-11-0","2-12-1"] 

另一个数组是否有任何快捷方式来更新所述第二阵列等阵列第0的第3列的更新第七阵列为true在元件阵列的阵列。 任何帮助将不胜感激。

+0

你是否想要切换元素,或者即使它已经为真,它总是“真”吗? – trex005

+0

完成后它不会是真的。每次打开程序时都要创建另一个数组数组。 –

回答

2

您可以拆分索引并将其用于大型阵列。

var elementArray = ["0-7-3","2-10-0","2-11-0","2-12-1"]; 
for(var i = 0; i < elementArray.length; i++){ 
    var idx = elementArray[i].split('-'); 
    arrayOfArrays[idx[0]][idx[1]][idx[2]] = true; 
} 
+0

我会尝试您的解决方案,感谢您的快速响应。我会根据结果更新问题。 –

+0

它的工作正如我预计的那样,非常感谢。 –

1

我不是第一个答案,IrkenInvader的几乎是相同的,只是雷有一定的错误它检查这是需要你的例子中。

var arrayOfArrays = [ 
 
    [ 
 
    [false, false, false, false], 
 
    [false, false, false, false], 
 
    [false, false, false, false], 
 
    [false, false, false, false], 
 
    [false, false, false, false], 
 
    [false, false, false, false], 
 
    [false, false, false, false], 
 
    [false, false, false, false], 
 
    [false, false, false, false], 
 
    [false, false, false, false], 
 
    [false, false, false, false], 
 
    [false, false, false, false], 
 
    [false, false, false, false], 
 
    [false, false, false, false], 
 
    [false, false, false, false], 
 
    [false, false, false, false], 
 
    [false, false, false, false], 
 
    [false, false, false, false], 
 
    [false, false, false, false], 
 
    [false, false, false, false], 
 
    [false, false, false, false], 
 
    [false, false, false, false], 
 
    [false, false, false, false], 
 
    [false, false, false, false], 
 
    ], 
 
    [ 
 
    [false, false, false, false], 
 
    [false, false, false, false], 
 
    [false, false, false, false], 
 
    [false, false, false, false], 
 
    [false, false, false, false], 
 
    [false, false, false, false], 
 
    [false, false, false, false], 
 
    [false, false, false, false], 
 
    [false, false, false, false], 
 
    [false, false, false, false], 
 
    [false, false, false, false], 
 
    [false, false, false, false], 
 
    [false, false, false, false], 
 
    [false, false, false, false], 
 
    [false, false, false, false], 
 
    [false, false, false, false], 
 
    [false, false, false, false], 
 
    [false, false, false, false], 
 
    [false, false, false, false], 
 
    [false, false, false, false], 
 
    [false, false, false, false], 
 
    [false, false, false, false], 
 
    [false, false, false, false], 
 
    [false, false, false, false], 
 
    ] 
 
]; 
 
var elementArray = ["0-7-3", "2-10-0", "2-11-0", "2-12-1"]; 
 
for (var i = 0; i < elementArray.length; i++) { 
 
    var keys = elementArray[i].split('-'); 
 
    if (keys.length == 3 && 
 
    typeof arrayOfArrays[keys[0]] != 'undefined' && 
 
    typeof arrayOfArrays[keys[0]][keys[1]] != 'undefined' && 
 
    typeof arrayOfArrays[keys[0]][keys[1]][keys[2]] != 'undefined' 
 
) { 
 
    arrayOfArrays[keys[0]][keys[1]][keys[2]] = true; 
 
    } 
 
} 
 
console.log(arrayOfArrays);

小提琴:https://jsfiddle.net/trex005/kzbq9xL0/1

如果你想切换,而不是总是在不断变化的元素设置为true,更改

arrayOfArrays[keys[0]][keys[1]][keys[2]] = true; 

arrayOfArrays[keys[0]][keys[1]][keys[2]] = !arrayOfArrays[keys[0]][keys[1]][keys[2]]; 
+0

你的解决方案也很好。我可以找到另一个地方来使用它,谢谢。 –