2011-11-10 3 views
0

자바 스크립트에서 배열을 사용하려고합니다. 다음 코드를 고려해보십시오.숫자의 문자열에서 자바 스크립트 배열

var visList = '1234,5678,9' 
var visListArray = new Array(visList); 
for (i = 0; i <= visListArray.length - 1; i++) 
{ 
     alert(visListArray[i]); 
} 

왜이 모든 것이 서로 뭉친 대신 개별 번호로 나뉘 지 않습니다?

도움이 될 것입니다.

많은 감사

답변

8

문자열에 split()를 호출하여 배열을 만듭니다

var visList = '1234,5678,9' 
var visListArray = visList.split(","); 

당신은 실제 코드에 대한 코드처럼 보이는 문자열을 대체 값 수 없습니다. 이 작업을 할 때 : 문자열이 3 쉼표로 구분 된 인수로 Array 생성자에 의해 해석되지 않기 때문에

var visListArray = new Array(1234,5678,9); 

너의 것, 그것은 하나의 문자열로 해석하지 않습니다.

편집 : 문자열에서 split()을 호출하면 문자열 배열이됩니다. 숫자 배열을 원한다면 배열을 반복하여 각 문자열을 숫자로 변환해야합니다.

visListArray = visList.split(",").map(function (item) { 
    return +item; 
}); 

이전 버전의 브라우저에서 map()를 사용하기위한 compatibility note를 참조하십시오 그렇게하는 한 가지 편리한 방법은 map() method가 사용하는 것입니다.

1

그 때문에 문자열이 시도 :

var visList = '1234,5678,9' 
var visListArray = [].concat(visList.split(',')); 
for (i = 0; i <= visListArray.length - 1; i++) { 
    alert(visListArray[i]); 
} 
+2

왜 'concat'을 호출합니까? –

+0

시작 값으로 배열을 초기화하려면 –

+0

@Shlomi - concat에 대한 호출이 완전히 중복됩니다. – RobG

1

을 당신은 배열로 기호로 구분 된 목록을 변환하려면 string.split

var visList = '1234,5678,9' 
var visListArray = visList.split(","); 

for (i = 0; i <= visListArray.length - 1; i++) 
{ 
    alert(visListArray[i]); 
} 
+0

OP는 ** split을 사용하지 않습니다. var s = '1234,5678,9'.match (/ \ d +/g);와 같은 트릭도 수행합니다. – RobG

1

를 사용해야합니다, 당신은 분할 (기호)를 사용할 수있다 :

var list = "1221,2323,4554,7667".split(","); 
for (var i = 0, il = list.length; i < il; i++) { 
    alert(+list[i]); // a casting from string to number 
}