用Javascript将数据追加到多维数组

时间:2018-08-27 12:54:35

标签: javascript php node.js

我正在将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实现同一目标?还是应该使用对象?然后我该如何处理对象

2 个答案:

答案 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]);