我的嵌套 json 看起来像(深度未定义。它可以是任何):
[{
"id":"1",
"label":"abc",
"children":[{
"id":"2",
"label":"xyz",
"children":[{
"id":"3",
"label":"lmn",
"children":[{...}]
}]
},
.
.
.
{
"id":"4",
"label":"ghi",
"children":[{
"id":"5",
"label":"aws",
"children":[{
"id":"6",
"label":"pqr",
"children":[{...}]
}]
}]
}]
假设现在我有一个“id”。我想获得该元素的“标签”。使用下划线我该如何做到这一点。我尝试过 _find
但它返回了undefined
。后来发现它返回的是第一层的结果。
最佳答案
简单的一行:
var label = _(json).find(function(item) { return item.id === "1"; }).label;
或者,如果您打算重新使用此功能:
function getItemById(id) {
return _(json).find(function(item) { return item.id === id; });
}
// ...
var label = getItemById('1').label;
已编辑 - 我错过了原始问题中的一个细节。
试试这个:
function getItemById(array, id) {
for (var i=0; i < array.length; i++) {
var item = array[i];
if (item.id === id) {
return item;
} else if (item.children.length) {
var child = getItemById(item.children, id);
if (child) {
return child;
}
}
}
}
// ...
var label = getItemById(json, '1').label;
关于javascript - 下划线js查找嵌套json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29517483/