javascript多阵列推送

时间:2015-12-12 08:29:49

标签: javascript arrays

是否可以在javascript中创建多维数组?

它应该是这样的:

$cars = array
(
array("Volvo",22,18),
array("BMW",15,13),
array("Saab",5,2),
array("Land Rover",17,15)
);

但我需要使用$cars.push();首先添加第一行(汽车)的所有数据。然后是数据“22”,“15”,“5”和“17”。然后是“18”,“13”,“2”和“15”。

然后它应该以与原始数组(表视图)相同的顺序打印。

修改 就像这样:

var cars = [];

cars.push("Volvo", "BMW", "Saab", "Land Rover");
cars.push(22, 15, 5, 17);
cars.push(18, 13, 2, 15);

并将其打印为html

沃尔沃,22,18

宝马,15 13

萨博,5,2

Land Rover,17,15

3 个答案:

答案 0 :(得分:0)

您可以参考documentation

正如@sampson在上面的评论中建议的那样,

 var cars = [ 
              [ "Volve", 22, 18 ], 
              [ "BMW", 15, 13 ],
              [ "Saab", 5, 2],
              [ "Land Rover", 17, 15]
            ];

答案 1 :(得分:0)

您可以使用位置ij的更改来重建数组。你可以将它从一个外观切换到另一个外观。



function transpose(source, target) {
    source.forEach(function (a, i) {
        a.forEach(function (b, j) {
            target[j] = target[j] || []
            target[j][i] = b;
        });
    });
}

var cars = [["Volvo", 22, 18], ["BMW", 15, 13], ["Saab", 5, 2], ["Land Rover", 17, 15]],
    pCars = [];

transpose(cars, pCars);
document.write('<pre>' + JSON.stringify(pCars, 0, 4) + '</pre>');
cars = [];
transpose(pCars, cars);
document.write('<pre>' + JSON.stringify(cars, 0, 4) + '</pre>');
&#13;
&#13;
&#13;

答案 2 :(得分:0)

  

是否可以在javascript中创建多维数组?

是的,是的。

但这似乎不是你的问题。相反,你的问题似乎是,如果我有一个数组数组,其中第一个子数组包含字段1的值,第二个子数组包含字段2的值,依此类推,那么如何将其重组为数组每个子数组包含一个对象的所有字段的数组。

正如另一个响应者提到的,这是数组转置。一个简单的方法是:

function transpose(a) {
  return a[0] . map((col, i) => a . map(row => row[i]));
}

将此用作:

var cars = [];

cars.push(["Volvo", "BMW", "Saab", "Land Rover"]);
cars.push([22, 15, 5, 17]);
cars.push([18, 13, 2, 15]);

console.log(transpose(cars));