2012-05-16 5 views
3

이것은 내 마지막 질문을 기반으로합니다. 다차원 배열에 2 개의 배열을 결합 하시겠습니까?

나는이 배열이 있습니다

var array1 = new Array ("Pepsi", "Coke", "Juice", "Water"); 
var array2 = new Array ("35", "17", "21", "99"); 

을 그리고 나는이 같은 다차원 배열을 형성하도록 결합하려는 :이 스크립트를 시도

[ 
    ["Pepsi","35"] 
    ["Coke", "17"] 
    ["Juice","21"] 
    ["Water","99"] 
] 

:

Values=[]; 

for (i = 0; i < array1.length; i++) { 
    Values[i] = Array(array1[i], array2[i]); 
} 

을하지만, 다음과 같은 결과를주었습니다 (올바른 값, 잘못된 이름) :

서면으로
[ 
    ["a","35"] 
    ["c","17"] 
    ["E","21"] 
    ["I","99"] 
] 
+4

[** 당신이 나를 위해 일을 가지고 무엇 **] (http://jsfiddle.net/VdRyr/) – qwertymk

+2

귀하 코드는 [correct] (http://jsfiddle.net/xd7Bf/)입니다. 적어도 Firefox와 Opera에서는 ... –

+0

자본 E와 나는 어디에서 왔으며, 그 오타가 있습니까? – Yatrix

답변

14
var array1 = ["Pepsi", "Coke", "Juice", "Water"], 
    array2 = ["35", "17", "21", "99"], 
    result = [], i = -1; 

while (array1[++i]) { 
    result.push([ array1[i], array2[i] ]); 
} 

,이 솔루션은 오직 문자열을 사용하는 것입니다 가정합니다. @ ajax333221이 아래의 주석에서 지적했듯이 boolean 또는 int 값을이 솔루션에 포함 시키려면 문제가 발생할 수 있습니다. 따라서, 나는 어려운 가치와 유형을 통해 트립하지 않으면 서, 당신의 목표를 달성 할 것이다 개선을 제안하고 싶습니다 :

var array1 = [false, 0, "Juice", -1], 
    array2 = ["35", "17", "21", "99"], 
    result = []; 

for (var i = 0; i < array1.length; i++) { 
    result.push([ array1[i], array2[i] ]); 
} 
+1

완벽하게 일했습니다 !!!!!!!!!!!!!!!! – supercoolville

+1

당신은 그가 항상 문자열로 작업 할 것이라고 생각했습니다. 만약 그가 0과 같은 다른 것들과 함께 작업한다면, 문제가있을 것입니다. – ajax333221

+0

@ ajax333221 예, 질문이 문제를 나타내는 것으로 가정합니다. – Sampson

4

당신은 배열에 .map()를 사용할 수 있습니다.

var Values = array1.map(function(v,i) { 
    return [v, array2[i]]; 
}); 

는 이전 버전의 브라우저를 위해 MDN shim를 참조하십시오.

라이브 데모 :http://jsfiddle.net/D9rjf/


이 작업을 꽤 할 거라면, 당신은 재사용 가능한 기능을 만들 수 있습니다.

이 예제에서는 Array.prototype으로 확장했지만, 좋지 않은 경우에는 필요하지 않습니다.

Array.prototype.combine = function(arr) { 
    return this.map(function(v,i) { 
     return [v, arr[i]]; 
    }); 
}; 

var Values = array1.combine(array2); 

라이브 데모 :http://jsfiddle.net/D9rjf/1/

+0

그래서 비파괴적인 방법을 사용하여 배열을 작성하는 것과 같이 충분하지는 않습니다. – Larry

관련 문제