在JSON对象上使用jQuery的find()

与brnwdrng的问题类似,我正在寻找一种搜索类似于JSON的对象的方法。假设我对象的结构是这样的:

TestObj = {

"Categories": [{

"Products": [{

"id": "a01",

"name": "Pine",

"description": "Short description of pine."

},

{

"id": "a02",

"name": "Birch",

"description": "Short description of birch."

},

{

"id": "a03",

"name": "Poplar",

"description": "Short description of poplar."

}],

"id": "A",

"title": "Cheap",

"description": "Short description of category A."

},

{

"Product": [{

"id": "b01",

"name": "Maple",

"description": "Short description of maple."

},

{

"id": "b02",

"name": "Oak",

"description": "Short description of oak."

},

{

"id": "b03",

"name": "Bamboo",

"description": "Short description of bamboo."

}],

"id": "B",

"title": "Moderate",

"description": "Short description of category B."

}]

};

我想获得一个id =“ A”的对象。

我已经尝试过各种方法,例如:

$(TestObj.find(":id='A'"))

但似乎没有任何效果。

任何人都可以想到一种无需使用“每个”即可根据某些条件检索项目的方法吗?

回答:

jQuery不适用于普通对象文字。您可以类似的方式使用以下函数来搜索所有“id”(或任何其他属性),而不管其在对象中的深度如何:

function getObjects(obj, key, val) {

var objects = [];

for (var i in obj) {

if (!obj.hasOwnProperty(i)) continue;

if (typeof obj[i] == 'object') {

objects = objects.concat(getObjects(obj[i], key, val));

} else if (i == key && obj[key] == val) {

objects.push(obj);

}

}

return objects;

}

像这样使用:

getObjects(TestObj, 'id', 'A'); // Returns an array of matching objects

以上是 在JSON对象上使用jQuery的find() 的全部内容, 来源链接: utcz.com/qa/427080.html

回到顶部