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
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
正如其他答案所指出的,这通常被称为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]
很遗憾,不行。您要查找的通常被称为 zip
或 zipWith
。 可以参考lodash的实现:https://lodash.com/docs#zipWith。
Array
在 MDN 上的参考链接:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array。它列出了所有可用于 Array.prototype
的方法,你会发现你要找的功能并不存在。 - lukewestbyreduce
来获得所需的结果: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]
["a", 1], ["b", 2], ["c", 3]
,而不是 ["a", 1, "b", 2, "c", 3]
,对吧? - Lifeweaverconst arr1 = ['a', 'b', 'c']
const arr2 = [1, 2, 3]
const arr3 = arr1.reduce((acc, current, index) => {
return [...acc, [current, arr2[index]]]
}, [])
console.log(arr3)