遍历数组并返回同一级别的子节点

时间:2014-02-02 10:54:35

标签: javascript arrays

我有以下数组结构:

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。

谢谢!

1 个答案:

答案 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 */;

...这将在用于简单对象的原型上创建一个可枚举属性。这应该从不完成。