javascript - lodash - 通过 JSON 进行嵌套搜索

标签 javascript json lodash

我有一个嵌套的 JSON 对象,看起来与此类似:

{
"data": {
    "periods": [
        {
            "number": 0,
            "halfs": [
                {
                    "half": 1,
                    "events": [
                        {
                            "event": "abc"
                            ....
                        },
                        {
                            "event": "xyz"
                            ...
                        }
                    ]
                },
                {
                    "half": 2,
                    "events": [
                        {
                            "event": "abc"
                            ....
                        },
                        {
                            "event": "xyz"
                            ...
                        }
                    ]
                }
            ]
        },
        {
            "number": 2,
            "halfs": [
                {
                    "half": 1,
                    "events": [
                        {
                            "event": "abc"
                            ....
                        },
                        {
                            "event": "xyz"
                            ...
                        }
                    ]
                }
            ]
        }
    ]
}

我正在尝试使用 lodash 提取所有事件对象(事件:abc、事件:xyz)对象。我知道我可以使用 .get(jsonObj, 'periods[1].halfs[0].events'));获取他的数据,但这需要我循环 N 次。有没有一种方法可以用最少的循环获取所有对象?

最佳答案

没有_.flatMap:

var events = _.flatten(_.map(data.periods,function(p){
  return _.flatten(_.map(p.halfs,function(h){
    return h.events;
  }));
}));

对于 4.0.0 及以上版本:

var events = _.flatMap(data.periods,function(p){
  return _.flatMap(p.halfs,function(h){ 
    return h.events;
  }));
}));

关于javascript - lodash - 通过 JSON 进行嵌套搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35106322/

相关文章:

sql - 将 JSON 列更改为 INTEGER[] ARRAY

javascript - 从深度未知的嵌套数组中删除项目

javascript - 在 javascript 的 console.log 中将变量乘以数字

javascript - 如何解决 Chrome 警告 : The deferred DOM Node could not be resolved to a valid node

java - 使用 Jackson 将 Json 文件映射到 POJO 需要 @JsonProperty

java - 如果我知道 jArray 中包含的字符串,如何在 jArray 中找到另一个元素?

javascript - 构建 Node.js 聊天

javascript - Angular2 显示数据示例不起作用

javascript - lodash:从对象数组中的属性数组创建组

javascript - 如何将每个值放入已按值分组的数组中?