JavaScript 6中是否有允许映射多个数组的功能?
像拉链一样:
var myFn = function (a, b) { console.log(a, b);}
var arr1 = ['a', 'b', 'c'];
var arr2 = [1, 2, 3];
arr1.map(myFn, arr2); // imaginary syntax.
// prints :
// a 1
// b 2
// c 3
答案 0 :(得分:15)
正如另一个答案所指出的,这通常被称为zip
。它可以实现为:
let zipped = arr1.map((x, i) => [x, arr2[i]]);
或者作为一种功能,基本上是:
let zip = (a1, a2) => a1.map((x, i) => [x, a2[i]]);
可以让你这样做:
zip(["a","b","c"], [1,2,3]); // ["a", 1], ["b", 2], ["c", 3]
答案 1 :(得分:6)
不幸的是,没有。您正在寻找的内容通常称为Rabl
或collection @cities, root: :cities , object_root: false
attributes :id, :name
node(:state) { |city| city.state.name }
node(:query) { params[:query] }
。请参阅lodash的实现以获取参考:https://lodash.com/docs#zipWith
答案 2 :(得分:1)
您还可以使用reduce
来获得所需的结果:
var arr1 = ['a', 'b', 'c'];
var arr2 = [1, 2, 3];
arr1.reduce((acc, current, index) => {
console.log(current, arr2[index])
return [...acc, current, arr2[index]]
}, [])
// a 1
// b 2
// c 3
// returns ["a", 1, "b", 2, "c", 3]