微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

对于这种数组操作,是否有一种有效的方法 JS?

如何解决对于这种数组操作,是否有一种有效的方法 JS?

我有一个数组数组,如下所示:

[
  [val-1-1,val-1-2],[val-2-1,val-2-2],[val-3-1,val-3-2],...
  [val-n-1,val-n-2]
]

数组可能很长,我想要实现的是将这个数据结构“拆分”为两个数组,如下所示: [val-1-1,val-2-1,val-3-1,... val-n-1][val-1-2,val-2-2,val-3-2,... val-n-2]

我正在寻找一种有效的方法来执行此操作。我知道通过循环和使用索引这在技术上很容易,但我想知道是否有一种有效的方法可用于此任务,因为初始数组很长而且我还有多个这些初始数组数组,因此循环可能需要不必要的长时间。

解决方法

对于每一列,只需检查结果中是否有该列的数组,如果已经有数组,则只需推送元素,否则创建一个新数组然后推送。

const transpose = (arr) =>
    arr.reduce(
      (m,r) => (r.forEach((v,i) => ((m[i] ??= []),m[i].push(v))),m),[]
    ),matrix = [
    [1,2,3],[1,];

console.log(transpose(matrix));

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。