我正在使用此代码。
var stuff = "mango,tango,snake";
for (thing in stuff.split(","))
console.log(thing);
我期待三行语言。我得到了三行索引。我检查了 toString 等方法。没人帮忙。
答案 0 :(得分:1)
这是正常行为。要记录值,请使用
var arr = stuff.split(",");
for (var thing in arr)
console.log(arr[thing]);
见the MDN on for in
(强调我的):
每次迭代都会为变量分配不同的属性名称。
答案 1 :(得分:0)
Javascript数组也只是一个对象,它也继承自Object
。但 Array 也继承自Array.prototype
并获得一些特殊的方法和行为。
但是毕竟,它只是一个 Object ,这意味着它的结构看起来像
{
0: 'mango',
1: 'tango',
2: 'snake'
}
如果现在使用for..in
循环该对象,我们只会得到您描述的结果(以及我们应该期望的结果)。对象的 Keys 只是索引值,我们只是循环对象键,对吗?
要获取键后面的实际值,我们访问整个对象,如
objectName[ key ]
答案 2 :(得分:0)
我应该使用什么?
您可以使用ECMAScript 5 's
功能Array.forEach来满足您的需求。
var stuff = "mango,tango,snake";
stuff.split(",").forEach(function(thing){ alert(thing); });
答案 3 :(得分:0)
循环遍历数组的标准方法是使用:
var stuffArray=stuff.split(",");
for (var i=0, stuffLength=stuffArray.length;i<stuffLength;i++) {
// here you can retrieve the value stuffArray[i]
}
还有forEach method,但旧浏览器(如IE 8)不支持。
for ... in循环遍历数组对象的属性,可能不仅仅提供数组项。