gpt4 book ai didi

javascript - 为什么这个对象循环不起作用?

转载 作者:行者123 更新时间:2023-12-03 08:22:02 27 4
gpt4 key购买 nike

我想循环遍历这个对象,并将“loc”值添加到数组(如果其边 = 2)。我做错了什么?

2025 是房间对象,所有东西都是房间。

//Object
{
"2025": {
"tom": {
"side": 1,
"loc": 111
},
"billy": {
"side": 2,
"loc": 222
},
"joe": {
"side": 2,
"loc": 333
},
"bob": {
"side": 1,
"loc": 444
}
}
}

//Code
var side2 = [];
for (var key in rooms[room]) {
if (rooms[room].hasOwnProperty(key)) {
var obj = rooms[room][key];
for (var prop in obj) {
if (obj.hasOwnProperty(prop)) {

if(prop == 'loc') {
if(obj[prop] == 2) {
side2.push(key);
}

}
}
}
}
}
console.log(side2);

最佳答案

您希望在 side 值为 2 时进行推送,因此您需要检查 side 而不是 loc >。然后你可以简单地推送obj.loc

...
if (obj.hasOwnProperty(prop)) {
if(prop == 'side') {
if(obj[prop] == 2) {
side2.push(obj.loc);
}
}
}
...

Fiddle Example

<小时/>

话虽这么说,您可以大大缩短这段代码,删除不需要的循环和工作,您可以将所有代码缩短为简单的:

for (var key in rooms[room]) {
var item = rooms[room][key];
if(item.side == 2)
side2.push(item.loc)
}

Fiddle Example

关于javascript - 为什么这个对象循环不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33704654/

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