JavaScript / For循环包含其他对象

时间:2014-05-25 06:40:35

标签: javascript node.js

我有下一个代码:

var allFilesName = fs.readdirSync("./0/0");
console.log(allFilesName);
for (var i in allFilesName) {
 console.log("the num is: " + i + " in: " + allFilesName);

输出结果为:

[ '6', 'd' ]
the num is: 0 in: 6,d

0仅包含allFilesName6时,为什么会得到d

2 个答案:

答案 0 :(得分:0)

i =数组中元素的索引。如果你想要元素本身 - 使用它:

   console.log("the num is: " + allFilesName[i] + " in: " + allFilesName);

答案 1 :(得分:0)

for..in不应该用于迭代索引顺序很重要的数组。数组索引只是具有整数名称的可枚举属性,并且与一般对象属性相同。无法保证for ... in将以任何特定顺序返回索引,并且它将返回所有可枚举属性,包括具有非整数名称和继承的属性。

因为迭代的顺序是依赖于实现的,所以迭代数组可能不会以一致的顺序访问元素。因此,在迭代访问顺序很重要的数组时,最好使用带有数字索引的for循环(或者Array.forEach或非循环的for ...)。 My Ref.

尝试使用常规for循环,它与我一起工作

var allFilesName = [ '6', 'd' ];
for (var i=0; i <= allFilesName.length; i++) 
{
 console.log("the num is: " + i + " in: " + allFilesName);
}