For In-loop In Javascript(Node.js)意外地迭代数组索引而不是元素
我有一个Node.js脚本,它读取和解析JSON文件的内容,并遍历其根数组的元素;当我试图检查这种迭代的对象时,我面临一些意想不到的结果;被迭代的对象似乎是被迭代元素的索引。 以下是脚本:For In-loop In Javascript(Node.js)意外地迭代数组索引而不是元素,javascript,node.js,foreach,Javascript,Node.js,Foreach,我有一个Node.js脚本,它读取和解析JSON文件的内容,并遍历其根数组的元素;当我试图检查这种迭代的对象时,我面临一些意想不到的结果;被迭代的对象似乎是被迭代元素的索引。 以下是脚本: if (process.argv.length != 3) { console.log("Usage: node chooseAdAmongAds.js /path/to/ads.json"); process.exit(9); } fs = require("fs"); var conte
if (process.argv.length != 3) {
console.log("Usage: node chooseAdAmongAds.js /path/to/ads.json");
process.exit(9);
}
fs = require("fs");
var content = fs.readFileSync(process.argv[2], "utf8")
var ads = JSON.parse(content);
for (ad in ads) {
console.log(ad);
}
JSON文件:
[
{
"impressions": 131,
"ID": 514,
"investment": 2
},
{
"impressions": 880,
"ID": 451,
"investment": 5
},
{
"impressions": 135,
"ID": 198,
"investment": 9
},
{
"impressions": 744,
"ID": 262,
"investment": 8
},
{
"impressions": 234,
"ID": 954,
"investment": 19
},
{
"impressions": 673,
"ID": 274,
"investment": 12
},
{
"impressions": 442,
"ID": 734,
"investment": 6
},
{
"impressions": 453,
"ID": 982,
"investment": 5
},
{
"impressions": 55,
"ID": 275,
"investment": 5
},
{
"impressions": 628,
"ID": 524,
"investment": 1
}
]
和控制台输出:
iMac-di-Michele:Node.js michele$ node chooseAdAmongAds.js example.json
0
1
2
3
4
5
6
7
8
9
iMac-di-Michele:Node.js michele$
为什么会发生这种情况?对于对象的可枚举属性上的…in循环,数组是对象
相反,使用数组构造进行迭代,例如.forEach,或者只使用for循环并通过其索引访问数组元素
ads.forEach(function (ad) {
console.log(ad)
})
对于对象的可枚举属性上的…in循环,数组是对象
相反,使用数组构造进行迭代,例如.forEach,或者只使用for循环并通过其索引访问数组元素
ads.forEach(function (ad) {
console.log(ad)
})
您只是在输出索引。试一试
控制台.logads[ad] 您只是在输出索引。试一试 控制台.logads[ad];