javascript - 下划线js查找嵌套json

标签 javascript jquery json nested underscore.js

我的嵌套 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/

相关文章:

javascript - 来自here.com的图 block / map 的Z索引

java - 停止 Jackson 自定义日期序列化器写入空值

javascript - 如何查看初始值.Select/Option

javascript - Node - Post 请求显示未定义

php - 跨域登录检查?

javascript - 单击 span 元素时如何隐藏列表项

jquery - HTML5 获取输入文件计数变化

javascript - jQuery 代码无法识别表单提交值

javascript - jQuery 函数未附加到 dom 元素

javascript - 在 jQuery 中创建 JSON 对象数组