我有一个多维数组,如
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);