2014-02-25 6 views
31

Ich habe 2 Arrays:Wie kann ich zwei Arrays in JavaScript zippen?

var a = [1, 2, 3] 
var b = [a, b, c] 

Was will ich als ein Ergebnis erhalten, ist:

[[1, a], [2, b], [3, c]] 

Es scheint einfach, aber ich kann einfach nicht herausfinden.

Ich möchte das Ergebnis ein Array mit jedem der Elemente aus den beiden Arrays zusammen gezippt sein.

+2

anzumerken, dass Array Karte() nicht in IE8 unterstützt wird, wenn das ein Problem ist. Polyfill hier https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map – TimHayes

+4

Diese Frage ist kein Duplikat, da sie nur nach * 2 * Arrays fragt, die gezippt werden sollen * N * -Anordnungen. Es handelt sich also um einen Sonderfall, für den es spezialisierte, leistungsfähigere Lösungen gibt. –

Antwort

80

Über die map Methode:

var a = [1, 2, 3] 
 
var b = ['a', 'b', 'c'] 
 

 
var c = a.map(function(e, i) { 
 
    return [e, b[i]]; 
 
}); 
 

 
console.log(c)

DEMO

+1

Total Javascript noob hier, aber ich hatte den Eindruck, dass der Index vor dem Element kommen muss? Das heißt, .map (Funktion (Index, Element))? – runawaykid

+3

@runawaykid Die Antwort ist richtig. Sie können die [MDN-Kartendokumentation zum Rückrufparameter] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map#Parameters) sehen. Params sind (in Reihenfolge): 'currentvalue',' index', 'array' – icc97

+0

Die Pfeilnotation ist sogar ein bisschen schöner: var c = a.map ((e, i) => [e, b [i] ]); – marczoid

5

Array.prototype.map()is not supported in older browsers,

Feature  Chrome Firefox (Gecko) Internet Explorer Opera Safari 
Basic support (Yes) 1.5  (1.8) 9     (Yes) (Yes) 

so ...

LIVE DEMO

var a = [1,2,3], 
    b = ['a','b','c']; 

var c = []; 
for(var i=0; i<a.length; i++){ 
    c.push([a[i], b[i]]); 
} 
console.log(c); // [[1, "a"], [2, "b"], [3, "c"]] 
+1

Danke dafür. Foruntanely Karte arbeitete in meiner Umgebung, aber ich habe diese Methode nur für den Fall aufgezeichnet. – userMod2

Verwandte Themen