【问题标题】:Systematacally combining arrays [duplicate]系统地组合数组[重复]
【发布时间】:2021-01-05 01:42:57
【问题描述】:

所以我有这三个数组:


  var a = ["one", "two", "three"];
  var b = ["a", "b", "c"];
  var c = ["1", "2", "3"];

我想像这样组合它们:

  var d = [
    ["one", "a", "1"],
    ["two", "b", "2"],
    ["three", "c", "3"],
  ];

我该怎么做?我知道我需要一个 foo 循环,但我似乎无法理解如何设置它。感谢您的任何回答!

【问题讨论】:

  • 是的,这个例子规模较小。数据比这样抽象得多。但我认为你所做的可以使用循环
  • 你要执行的操作叫做zip
  • @Nick var d = [a, b, c] 将是 OP 想要的转置版本。
  • 哦,是的,我错过了
  • 另一个有用的骗子here

标签: javascript


【解决方案1】:

喜欢:

const a = ['one', 'two', 'three'], b = ['a', 'b', 'c'], c = ['1', '2', '3'], combo = [];
for(let i=0,l=a.length; i<l; i++){
  combo.push([a[i], b[i], c[i]]);
}
console.log(combo);

【讨论】:

    【解决方案2】:

    假设所有数组的长度相同:

    首先将它们组合成一个数组:

    let combined = [a, b, c];
    

    然后同时遍历它们:

    var d = [];
    
    for (var i = 0; i < combined[0].length; i ++) {
        d.push(combined.map(arr => arr[i]));
    }
    

    【讨论】:

      猜你喜欢
      • 2010-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多