【问题标题】:Javascript ES6 - map multiple arraysJavascript ES6 - 映射多个数组
【发布时间】:2017-09-22 04:51:31
【问题描述】:

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 ecmascript-6


【解决方案1】:

正如另一个答案所指出的,这通常称为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]

【讨论】:

    【解决方案2】:

    很遗憾,没有。您要查找的内容通常称为zipzipWith。参考 lodash 的实现:https://lodash.com/docs#zipWith

    【讨论】:

    • 哇。我知道 lodash,但我现在不能使用它。你有那个缺失功能​​的来源吗? (我很难知道)。
    • 不,我不是要代码吗?你怎么知道它不见了?显然,ES6 标准中没有表示“缺失的特性”。那么你有没有提到它缺失的地方?
    • 明白了!这是 MDN 上Array 的参考链接。 developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… 列出了Array.prototype 上所有可用的方法,你会发现你要找的功能不存在。
    • 谢谢,我会尽快接受您的答复。
    【解决方案3】:

    您也可以使用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]
    

    【讨论】:

      猜你喜欢
      • 2020-03-19
      • 2022-01-18
      • 2019-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多