2011-11-10 23 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 
}