【发布时间】:2018-01-03 15:28:13
【问题描述】:
我有一个具有以下结构的 JSON API 响应
[
{
title: "top1",
sections: [
{
section_title: "section1",
content: [
{
content_title: "title1",
content_id: "id1"
},
{
content_title: "title2",
content_id: "id2"
}
]
},
{
section_title: "section2",
content: [
{
content_title: "title3",
content_id: "id3"
},
{
content_title: "title4",
content_id: "id4"
}
]
}
]
}, {
title: "top2",
sections: [...]
},
...
]
我还有一小部分内容 ID arr2 = ['id2','id3']。我需要从 API 请求中搜索数据以查找 arr2 中包含的任何 content_id。
我有一些有效的 lodash 代码,但我的嵌套 forEach 方法似乎不是最有效的方法:
_.forEach(response, function(top) {
_.forEach(top.sections, function(section) {
_.forEach(section.content, function(content) {
_.forEach(arr2, function(id) {
if(id === content.content_id) {
// Do stuff
}
})
})
})
})
我该如何改进这段代码?
【问题讨论】:
-
我认为举个例子可能会有所帮助//做你想要实现的东西。您是想以某种方式改变 API 响应,还是根据匹配的内容对象创建新对象。如果你想为每个匹配的对象做一些事情,你的迭代很好,尽管 _.find() 可以帮助删除一个循环。
-
如果比较为真,我将在找到的
content对象上设置一个属性为真,在父section对象上设置一个属性为真,在祖父@987654327 上设置一个属性为真@对象:content.owned = true、section.owned = true、top.owned = true
标签: javascript arrays json object lodash