2011-11-10 57 views
0

我正在嘗試在javascript中使用數組。請看下面的代碼:從數組字符串中獲得的Javascript數組

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(","); 

不能substitue一個字符串,它看起來像實際的代碼的代碼。雖然這會工作:

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

你的沒有,因爲該字符串不是由數組構造解釋爲3逗號分隔的參數,它被解釋爲一個字符串。

編輯:請注意,對字符串調用split()會生成一個字符串數組。如果你想要一個數組數組,你需要迭代Array將每個字符串轉換爲數字。一個方便的方式來做到這一點是使用map() method

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

在舊的瀏覽器使用map()compatibility note

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 
}