gpt4 book ai didi

javascript - 为什么 obj 不可迭代

转载 作者:行者123 更新时间:2023-11-28 14:15:31 24 4
gpt4 key购买 nike

在编译此代码时,我收到一个错误,指出 obj 不可迭代。为什么?我必须检查有多少用户在线

let users = {
Alan: {
age: 27,
online: false
},
Jeff: {
age: 32,
online: true
},
Sarah: {
age: 48,
online: false
},
Ryan: {
age: 19,
online: true
}
};

function countOnline(obj) {
let num =0;
for(let user of obj){
if(user['online']==true){
num++;
}
}
return num;
}

console.log(countOnline(users));

最佳答案

因为您正在使用for...of而不是for...in

for...of 用于循环 iterable objectsfor...in 则迭代对象的可枚举属性。为了让 for...of 工作,对象必须实现 @@iterator方法(数组、字符串、集合等)

let users = {
Alan: {
age: 27,
online: false
},
Jeff: {
age: 32,
online: true
},
Sarah: {
age: 48,
online: false
},
Ryan: {
age: 19,
online: true
}
};

function countOnline(obj) {
let num = 0;
for (let user in obj) {
if (obj[user]['online'] == true) {
num++;
}
}
return num;
}

console.log(countOnline(users));

for...in中,user变量将代表对象的键,如Alan。因此,要获取属性的值,您需要使用 obj[user] (例如:obj["Alan"])。因此,条件将更改为:

if (obj[user]['online'] == true)

关于javascript - 为什么 obj 不可迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57678098/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com