我有一个具有以下结构的
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
}
})
})
})
})
我怎么能改进这段代码?
最佳答案 经过一番思考,我实际上无法为您提供更优雅的解决方案,使用其他lodash功能.似乎要为每个案例设置拥有的属性,forEach就是要走的路.我可以做的唯一优化就是避免使用lodash简单地使用vanilla javascript forEach Array函数,并使用find替换最里面的forEach(可能会略微提升性能).
response.forEach((topItem) => {
topItem.sections.forEach((section) => {
section.content.forEach((content) => {
if(arr2.find((item) => { return item === content.content_id; })){
topItem.owned = true; section.owned = true; content.owned = true;
}
});
});
});
我对箭头函数语法也有个人偏好…