Javascript ES6 - 映射多个数组

nha*_*nha 11 javascript ecmascript-6

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
Run Code Online (Sandbox Code Playgroud)

Ben*_*aum 18

正如另一个答案所指出的,这通常被称为a zip.它可以实现为:

let zipped = arr1.map((x, i) => [x, arr2[i]]);
Run Code Online (Sandbox Code Playgroud)

或者作为一个功能,基本上:

let zip = (a1, a2) => a1.map((x, i) => [x, a2[i]]); 
Run Code Online (Sandbox Code Playgroud)

哪个会让你这样做:

zip(["a","b","c"], [1,2,3]); // ["a", 1], ["b", 2], ["c", 3]
Run Code Online (Sandbox Code Playgroud)


Ona*_*acs 9

您还可以使用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]
Run Code Online (Sandbox Code Playgroud)


luk*_*tby 6

很不幸的是,不行.您正在寻找的通常被称为zip或zipWith.请参阅lodash的实现以获取参考:https://lodash.com/docs#zipWith

  • 疑难杂症!这是MDN上"Array"参考的链接.https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array它列出了`Array.prototype`上可用的所有方法,你会发现你正在寻找的功能不在场. (2认同)