您没有显示分配1,2
给data[10]
. 的值1,2
很简单2
,正如您在 JavaScript 外壳/控制台中执行以下命令所看到的那样。有关逗号运算符的工作原理,请参阅参考资料。
但是,您收到的错误消息表明您有 string "1,2"
。要将其转换为数组,您应该使用split()
如下:
> data[10] = "1,2"
1,2
> data[10].split(',')
[ "1", "2" ]
要迭代值,您可以in
在结果数组上使用运算符,如下所示:
var data = new Array();
data[10] = '1,2';
var valueArray = data[10].split(',');
for (var i in valueArray) {
alert('valueArray[' + i + '] is ' + valueArray[i]);
}
您可以在浏览器控制台中运行它,它alert
会显示两条消息:
- valueArray[0] 为 1
- valueArray[1] 为 2
请注意,您不需要i
在循环开始之前进行初始化。操作员将自动执行此in
操作。此外,使用局部变量是一种很好的做法,因此var i
在上面的代码中。
附带说明一下,如果您是 JS 新手,但需要处理大量数据结构操作,那么值得学习underscore.js。特地来看看_.each()
。下划线可以使您免于编写大量循环逻辑。
但是,如果您想进行成员资格检查,则需要使用 not in
but Array.indexOf()
。请参阅 http://jsfiddle.net/nRS9m以获取评论中从您的 jsfiddle 分叉的示例。更多示例:
> valueArray
[ "1", "2" ]
> valueArray.indexOf("3")
-1
> valueArray.indexOf("1")
0
> valueArray.indexOf("2")
1
> valueArray.indexOf(1)
-1
> valueArray.indexOf((1).toString())
0