如何在javascript多维数组中获得数组的键和值

How to get keys and values of arrays inside Multidimensional array in javascript

本文关键字:数组 键和值 javascript      更新时间:2023-09-26

我有一个多维数组,如

MultArrary = [
['a','b'],
['c','d'],
['f','g']
]

我需要的是得到数组中每个数组的键和值,并将其推入另一个数组

Expected array1 = ['a','c','f'];
expected array2 = ['b','d','g'];

关于如何用javascript或rxjs实现这一点的任何想法将是伟大的

在您的情况下,最简单的方法(虽然语法上不正确,请参阅您的问题下面的注释)是使用Map(前提是您处于支持ecmascript6的环境中):

    var MultiArray = [
      ['a', 'b'],
      ['c', 'd'],
      ['f', 'g']
    ];
    var m = new Map(MultiArray);
    var index0 = Array.from(m.keys());
    var index1 = Array.from(m.values());
    console.log(index0, index1);

使用Underscore.js你可以使用unzip:

var MultArrary = [
  ['a', 'b'],
  ['c', 'd'],
  ['f', 'g']
];
var rst = _.unzip(MultArrary);
//[['a','c','f'],['b','d','g']]
console.log(rst);
<script data-require="underscore.js@1.8.3" data-semver="1.8.3" src="//cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>

您可以使用一种方法并在一个任务中构建结果。

您想要的结果是在pivot[0]pivot[1]

var multArrary = [['a', 'b'], ['c', 'd'], ['f', 'g']],
    pivot = multArrary.reduce(function (r, a) {
        a.forEach(function (b, i) {
            r[i] = r[i] || [];
            r[i].push(b);
        });
        return r;
    }, []);
console.log(pivot);