【问题标题】:How to pair elements between multiple arrays in javascript [duplicate]如何在javascript中的多个数组之间配对元素[重复]
【发布时间】:2018-08-07 21:15:47
【问题描述】:

我有一个多维数组,它可以包含不同数量的数组。我想要做的是按键而不是值的顺序匹配所有数组,并为创建的每一行生成一个新数组,就像这样

var arr = [
  [1,2,3,4,5],
  [1,2,3,4,5],
  [1,2,3,4,5],
  [1,2,3,4,5]
]

我需要的结果

var arr = [[1,1,1,1],[2,2,2,2],[3,3,3,3],[4,4,4,4],[5,5,5,5]]

我怎样才能做到这一点?

【问题讨论】:

  • 你的意思是将行转换为列,将列转换为行?
  • 通过代码的使用...在遇到困难时再回来:p
  • const rotate = a => Object.keys(a[0]).map(c => a.map(r => r[c] )); - 哦,等等,你不想旋转数组,你只想要一个相同值的数组?
  • 你的样本输入和输出实际上是模棱两可的......如果输入是[[1,2,3],[4,5,6],[7,8,9]]你会期望什么输出?
  • 或者更好const fn=a=>a[0].map((c, i)=>a.map(r=>r[i]));

标签: javascript arrays multidimensional-array


【解决方案1】:

我想这就是你要找的东西。

var arr = [
  [1,2,3,4,5],
  [1,2,3,4,5],
  [1,2,3,4,5],
  [1,2,3,4,5]
];

var res = arr.reduce((x, y) => {
  for(let i in y) {
    x[i] ? x[i].push(y[i]) : x[i] = [y[i]];
  }
  
  return x;
}, []);

console.log(res);

【讨论】:

  • 不要介意我的评论:p
  • @JaromandaX 他想要的是键而不是值的顺序。他的查询是“我想做的是按键而不是值的顺序匹配所有数组”
  • 我看错了你的代码:p
【解决方案2】:

我希望你正在寻找这个。它在 map() 中隐式检索列和行的长度。来源 [Swap rows with columns (transposition) of a matrix in javascript

function transpose(a) {
    return Object.keys(a[0]).map(function(c) {
        return a.map(function(r) { return r[c]; });
    });
}
      


        console.log(transpose([
            [1,2,3,4,5],
      [1,2,3,4,5],
      [1,2,3,4,5],
      [1,2,3,4,5]
        ]));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-18
    • 2018-11-13
    • 1970-01-01
    • 1970-01-01
    • 2021-12-27
    • 2021-11-02
    • 1970-01-01
    • 2015-09-16
    相关资源
    最近更新 更多