我有以下数组结构:
rgInventory": {
"2085630349": {
"id": "2085630349",
"classid": "253266389",
"instanceid": "253354499",
"amount": "1",
"pos": 1
},
"1938126110": {
"id": "1938126110",
"classid": "57939745",
"instanceid": "0",
"amount": "1",
"pos": 2
},
...
我需要能够识别rgInventory的哪个子项具有属性pos = 1,然后返回此子数组的id(在上面的示例中,这将是2085630349。
谢谢!
答案 0 :(得分:1)
你拥有的不是数组,只是一个对象。
您可以使用for-in
循环遍历对象的键,如下所示:
var key;
for (key in obj) {
// `key` will be each key, in no particular order
}
它不仅通过对象自己的属性循环,而且通过它从原型继承的可枚举属性循环。像你那里的简单对象不会从他们的原型中继承任何可枚举的属性(除非有人在下面做了一些非常愚蠢的事情),但是如果你想确定,你可以在上面的循环中使用if (obj.hasOwnProperty(key))
来只处理自己的而不是继承的。
然后查看obj[key]
,它是对子对象的引用,并查看它是否具有相关的pos
属性。
为了完整起见,真正愚蠢的事情就是:
Object.prototype.someName = /* some value */;
...这将在用于简单对象的原型上创建一个可枚举属性。这应该从不完成。