【问题标题】:javascript multi array pushjavascript多数组推送
【发布时间】:2015-12-12 08:29:49
【问题描述】:

是否可以在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

路虎,17、15

【问题讨论】:

  • var cars = [ [ "Volve", 22, 18 ], [ "BMW", 15, 13 ] ];
  • 但是我如何首先添加沃尔沃。然后加上宝马?不是单线
  • 我需要先添加汽车,其他数据。
  • 请解释一下目标的数据结构。
  • cars.push(["Volvo", 22, 18])...?! – 告诉我们更多关于为什么你想以这种特殊的顺序来做这件事,我们可以告诉你如何真正解决你的问题。

标签: javascript arrays


【解决方案1】:

您可以参考documentation

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

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

【讨论】:

    【解决方案2】:

    是否可以在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));
    

    【讨论】:

    • 是否可以像变量一样循环遍历数组:cars[0] (volvo) cars[1] (22) cars[2] (18)
    • 建议阅读 JS 数组和循环的基础知识。同时运行上面的代码并检查transpose(cars)的内部结构。
    【解决方案3】:

    您可以通过更改位置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>');

    【讨论】:

    • 如果我的数组看起来像这样。 var cars = [ [“沃尔沃”、“宝马”、“萨博”、“路虎”]、[22、15、5、17]、[18、13、2、15]];
    • 我猜你在寻找“transpose”这个词而不是“transform”。
    猜你喜欢
    • 2011-12-14
    • 1970-01-01
    • 2011-07-07
    • 1970-01-01
    • 1970-01-01
    • 2011-06-04
    • 2011-12-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多