【发布时间】:2019-04-22 13:52:57
【问题描述】:
我有一个名为“Places”的多维数组,如下所示:
0: Array [ 1, 1 ]
1: Array [ 1, 2 ]
2: Array [ 1, 3 ]
3: Array [ 1, 4 ]
4: Array [ 1, 5 ]
5: Array [ 2, 1 ]
6: Array [ 2, 2 ]
7: Array [ 2, 3 ]
8: Array [ 2, 4 ]
9: Array [ 2, 5 ]
10: Array [ 3, 1 ]
11: Array [ 3, 2 ]
12: Array [ 3, 3 ]
13: Array [ 3, 4 ]
and so on until [ 5, 5 ]
我还有另一个数组(称为“occupied”):
0: Array [ 1, 5 ]
我有一个 for-in 循环,它创建一个新数组(“unOccupied”),其中包含“Places”中的所有东西,除了那些也在“占用”。 这是代码:
for(var arr in Places){
for(var filtered in occupied){
if(Places[arr][0] !== occupied[filtered][0] || Places[arr][1] !== occupied[filtered][1]){
unOccupied.push(Places[arr]);
}
}
}
我的预期是,unOccupied 变成了这样:
0: Array [ 1, 1 ]
1: Array [ 1, 2 ]
2: Array [ 1, 3 ]
3: Array [ 1, 4 ]
4: Array [ 2, 1 ]
5: Array [ 2, 2 ]
and so on until [ 5, 5 ]
所以,这是“Places”的副本,但没有“occupied”的元素。
如果“occupied”包含 1 个元素,则一切正常,“unOccupied”包含 24 个元素。但是如果“occupied”包含例如 2 个元素,“unOccupied”确实有 48 个元素,而“Places”拥有的所有元素都是双倍的, 除了也在“occupied”中的元素。
如果“occupied”包含更多元素,“unOccupied”也包含更多元素。但为什么?以及如何解决?
提前致谢!
【问题讨论】:
-
What I expected...请同时展示你得到的东西(不要只是描述它,展示它)......或者将你的代码变成一个可运行的sn-p -
好的,但是如何制作sn-p? (对不起,我是新来的)
-
我想你需要一个更好的数据结构来提高效率。如何将所有以 1 开头的子数组放置在索引 1 处,其子数组值类似于
[null,1,2,3,4,5],以便您可以通过arr[n][m]直接访问 2D 空间并在被占用时使该值无效。
标签: javascript arrays loops multidimensional-array