2014-02-25 63 views
31

我有2列:如何在JavaScript中壓縮兩個數組?

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

我想要得到的結果是:

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

它似乎很簡單,但我就是想不通。

我想要結果是一個數組與兩個數組中的每個元素壓縮在一起。

+2

注意陣圖()不是在IE8支持,如果這是一個問題。這裏填寫https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map – TimHayes

+4

這個問題不是重複的,因爲它只要求* 2 *數組被壓縮而不是* N *數組。因此,這是一個特殊的情況,其中有專門的,更高性能的解決方案。 –

回答

80

使用map方法:

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

總的JavaScript noob在這裏,但我的印象是索引必須在元素之前?也就是.map(function(index,element))? – runawaykid

+3

@runawaykid答案是正確的。你可以在回調參數中看到[MDN map文檔](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map#Parameters)。參數是(按順序):'currentvalue','index','array' – icc97

+0

使用箭頭符號甚至更好一點: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) 

所以......

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

謝謝你。在我的環境中正式映射工作,但我已經記錄了這種方法以防萬一。 – userMod2

相關問題