【问题标题】:Javascript - Combining multi-dimensional array with indexJavascript - 将多维数组与索引相结合
【发布时间】:2016-02-23 01:14:21
【问题描述】:

我有一个如下所示的多维数组:

[  
  ["1","2","3","4"],
  ["1","2","3","4"],
  ["1","2","3","4"], 
  ["1","2","3","4"]  
]  

我希望完成的是通过将数组的值按其索引添加来将所有内容组合到一个数组中。

预期结果:

[4,8,12,16] //(adding the 4 array values with appropriate index)

我看到 Lodash 有一个方法 _.zip,但它不接受数组数组作为输入来给出正确的值。有没有容易做到的?

【问题讨论】:

    标签: javascript arrays multidimensional-array lodash


    【解决方案1】:

    如果_.zip 不接受数组数组作为输入,则有一种技术可以实现。 _.zip.apply(null, array).

    它可以像下面那样完成。 (请注意,您的底层元素是字符串,因此还有一个步骤可以将它们转换为数字。)

    var data =[  
      ["1","2","3","4"],
      ["1","2","3","4"],
      ["1","2","3","4"], 
      ["1","2","3","4"]  
    ];
    
    var result = _.map(_.zip.apply(null, data), function (n) {
      return _.sum(_.map(n, function(x) { return +x; }));
    }); 
    
    console.log(result);
    

    The demo.

    【讨论】:

      【解决方案2】:

      我将您的问题解释如下:将数组中的每个元素映射到它的长度加上前一个元素的值。这是您可以做到这一点的一种方法。

      x = [  
        ["1","2","3","4"],
        ["1","2","3","4"],
        ["1","2","3","4"], 
        ["1","2","3","4"]  
      ]  
      result = x.map(function(a) {
          return a.length;
      }
      for (i = 1; i < result.length; ++i) {
          result[i] += result[i - 1];
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-12-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-02-14
        • 1970-01-01
        • 1970-01-01
        • 2020-04-07
        相关资源
        最近更新 更多