2013-05-12 3 views
2

JavaScript에서는 구분 기호를 사용하여 문자열의 다차원 배열에서 각 문자열을 분할 할 수 있습니까? 문자열 분리자를 사용하여 문자열의 다차원 배열을 분할하려고하지만 다중 for-loops를 사용하지 않고 다차원 배열을 반복하는 방법을 아직 모릅니다.구분 기호를 사용하여 문자열 배열을 분할

var theArray = [["Split,each"],["string, in"],["this, array"]]; 

는 지금까지 내가 아는 한, 다차원 배열에 string.split(",") 방법을 적용 할 수 없습니다.

var newArray = theArray.map(function(v,i,a){ 
    return v[0].split(","); 
}); 

기능 전달됩니다

alert([["Split,each"],["string, in"],["this","array"]].split(",")); 
+3

그러면 결과는 어떻게됩니까? 3 배열의 배열 또는 6 문자열의 배열? –

+0

@MichaelBerkowski 결과는 3 개 배열의 배열이어야하며, 각 배열은 문자열 배열입니다. –

+1

@AndersonGreen 배열의 마지막 항목이 두 개의 별도 문자열 배열로되어 있습니까? 아니면이 실수입니까? –

답변

5

는 배열의 수정 된 버전을 반환하는 배열 map 방법을 사용하여이 코드가 유효하지 않기 때문에 나는, 해결 방법을 찾아야합니다 map 메서드에 대한 인수가 매핑 된 배열의 값을 결정하는 데 사용됩니다. 보시다시피,이 함수는 배열의 각 값을 취해서 쉼표로 나누고 두 개의 문자열 배열을 반환합니다.

출력은 다음과 같습니다

[["Split", "each"],["string", "in"],["this", "array"]]; 

임의의 깊이의 배열에 대해 반복적으로이 작업을하려면, 당신은 사용할 수 있습니다

var newArray = theArray.map(function mapper(v,i,a){ 
    if(typeof v == "string"){ 
     return v.split(","); 
    } else { 
     return v.map(mapper); 
    } 
}); 
+0

'i'와'a'를 포함 할 필요가 없습니다. 중복 변수입니다. 또한'map'은 IE <9의 버전에서는 지원되지 않습니다. –

+0

@ElliotBonneville 예, 습관에 추가했습니다. –

+0

오류 'Uncaught TypeError : Object [object Array]에'split '메소드가 없습니다. http://jsfiddle.net/4Psmt/ –

3

당신은이 루프 전통을 사용하여 수행 할 수 있습니다

var theArray = [["Split,each"],["string, in"],["this","array"]]; 

for(var i = 0; i<theArray.length; i++) { 
    theArray[i] = theArray[i].split(","); 
} 

나는 map 방법을 사용하여 명확하지 않습니다. it doesn't have great support. (IE < 9는 지원하지 않습니다.)

+0

모든 차원의 다차원 배열에는이 작업이 적용되지 않습니다. 2 차원 배열에서만 작동합니다. –

+0

2 차원 배열로 예제를 제공했을뿐입니다. 재귀를 사용하여 다차원 배열을 반복합니다. 내 대답에이 기술의 예를 제공 할 것입니다. –

+0

여기에도 재귀 적 반복 기법이 없습니다. 이 부분은 아직 진행중인 작업입니까? –

관련 문제