2015-10-04 10 views
6

JavaScript 6に複数の配列をマップできる機能はありますか?Javascript ES6 - 複数の配列をマップする

ジッパーような何か:

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

これは既に質問に答えてください:[http://stackoverflow.com/questions/4856717/javascript-equivalent-of-pythons-zip-function](http://stackoverflow.com/questions/4856717/javascript-equivalent-of-pythons -zip-function) – HartleySan

答えて

4

残念ながら、ありません。あなたが探しているものは、一般にzipまたはzipWithと呼ばれます。参照のためのlodashの実装を参照してください。https://lodash.com/docs#zipWith

+0

Aww。私はロダッシュについて知っていますが、今は使用できません。欠けている機能のソースがありますか? (私はかなり知っている)。 – nha

+0

'zipWith'関数のソースコードを意味していますか? – lukewestby

+0

いいえコードを要求していませんか?それが行方不明であることをどのように知っていますか?明らかに「欠けている機能」はES6標準では表現されていません。だからあなたはそれが欠けていることを指摘するための参照を持っていますか? – nha

10

他の回答が指摘する通り、これは一般にzipとして知られています。基本的に、

let zipped = arr1.map((x, i) => [x, arr2[i]]); 

または関数として:それはとして実装することができ

あなたが聞かせ
let zip = (a1, a2) => a1.map((x, i) => [x, a2[i]]); 

あなたはまた、望ましい結果を得るために reduceを使用することができ
zip(["a","b","c"], [1,2,3]); // ["a", 1], ["b", 2], ["c", 3] 
0

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] 
関連する問題