我有下一个代码:
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
仅包含allFilesName
和6
时,为什么会得到d
?
答案 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);
}