我正在将PHP代码编写到Node.js中,并且在程序处理多维数组的部分停止了工作。
在PHP中,我得到了这个(为简化起见,删除了for循环):
$tables = [];
$left_over_array = [34, 35, 36, 37];
$round = 0;
$row = 0;
$tables['round_'.$round][$row][]=$left_over_array[0];
$tables['round_'.$round][$row][]=$left_over_array[1];
$tables['round_'.$round][$row+3][]=$left_over_array[0];
$tables['round_'.$round][$row+3][]=$left_over_array[1];
编辑:$row
的值不是0,1,2,3
,而是可能是0, 1, 10, 3, 12
顺序。
PHP代码的结果如下所示:
$tables = [
'round_0'=>[
'0'=>[
0=>34,
1=>35
],
'3'=>[
0=>36,
1=>37
],
]
]
稍后我需要访问此数据。当我在这种结构中拥有它时,我可以简单地执行$tables['round_0'][3][1]
以获得值36
我的问题是,如何用Javascript实现同一目标?还是应该使用对象?然后我该如何处理对象
答案 0 :(得分:0)
必须将Javascript关联数组声明为对象,并且必须先存在键,然后再尝试在其中添加任何内容。
因此,按照我的代码,我准备了一个从0到9的循环,然后检查特定的round_ {number}是否未定义。如果是这样,我将键设置为数组,然后将其添加到元素中,类似于php中的 [] ,但具有功能 push()来自Javascript。
var tables = [];
var left_over_array = [34, 35, 36, 37];
for (var round = 0; round < 10; round++) {
if (tables['round_'+round] == undefined) {
tables['round_'+round] = [];
}
tables['round_'+round].push([
left_over_array[0],
left_over_array[1],
]);
tables['round_'+round].push([
left_over_array[2],
left_over_array[3],
]);
}
console.log(tables['round_0'][0][1]);
答案 1 :(得分:0)
已解决
var tables = [];
var left_over_array = [34, 35, 36, 37];
var round = 0;
var row = 0;
tables['round_'+round] = []; //In JS initialization before assignment is important
tables['round_'+round][row+3] = [
left_over_array[0],
left_over_array[1],
];
tables['round_'+round][row+10] = [
left_over_array[3],
left_over_array[1],
];
console.log(tables['round_0'][3][1]);