我的数据:
[
{
"configData":[
{
"repoSettings":[
{
"BaseURL":"45df16eb-55f9-48a9-9df8-428984524d7b",
"CurrentBranch":"Publish_1522323990",
"CurrentHeadSHA":"85c599a6ab3ecf8bfb469479da",
"RepositoryId":1528,
"RepositoryName":"45df16eb-55f94524d7b"
}
]
},
{
"pageSettings":[
{
"PageCss":[
],
"PageExternalCss":[
],
"PageExternalJs":[
],
"PageLayout":"default",
"PageMetaInfo":[
],
"PageMetacharset":"UTF-8",
"PageName":"index.html",
"PageSEODescription":"",
"PageSEOKeywords":"",
"PageSEOTitle":"",
"PageScripts":[
],
"PageStyles":[
],
"partials":[
{
"Header":"default"
},
{
"Footer":"default"
}
]
},
{
"PageCss":[
],
"PageExternalCss":[
],
"PageExternalJs":[
],
"PageLayout":"default",
"PageMetaInfo":[
],
"PageMetacharset":"UTF-8",
"PageName":"about.html",
"PageSEODescription":"",
"PageSEOKeywords":"",
"PageSEOTitle":"",
"PageScripts":[
],
"PageStyles":[
],
"partials":[
{
"Header":"default"
},
{
"Footer":"default"
},
{
"Sidebar":"default"
}
]
},
,
{
"PageCss":[
],
"PageExternalCss":[
],
"PageExternalJs":[
],
"PageLayout":"default",
"PageMetaInfo":[
],
"PageMetacharset":"UTF-8",
"PageName":"about.html",
"PageSEODescription":"",
"PageSEOKeywords":"",
"PageSEOTitle":"",
"PageScripts":[
],
"PageStyles":[
],
"partials":[
{
"Header":"default"
},
{
"Footer":"default"
},
{
"Sidebar":"default"
},
{
"MenuBar":"default"
}
]
}
]
}
]
}
]
在此数据中,我想迭代 pageSettings 的所有对象以及所有部分数组内部,我想迭代所有对象并找到匹配条件的所有索引。 假设我有“标题”键和值“默认”对。现在我想在这个 JSON 中找到所有 pageSettings 对象和所有partials 对象。如果找到键值对,则为该 pageSettings 索引返回 true。 通过Lodash可以吗?或者你可以提供片段吗?
最佳答案
看看这个。 您可以在数组上使用 forEach() 并尝试从部分中找出键和值。
let data = [
{
"configData":[
{
"repoSettings":[
{
"BaseURL":"45df16eb-55f9-48a9-9df8-428984524d7b",
"CurrentBranch":"Publish_1522323990",
"CurrentHeadSHA":"85c599a6ab3ecf8bfb469479da",
"RepositoryId":1528,
"RepositoryName":"45df16eb-55f94524d7b"
}
]
},
{
"pageSettings":[
{
"PageCss":[
],
"PageExternalCss":[
],
"PageExternalJs":[
],
"PageLayout":"default",
"PageMetaInfo":[
],
"PageMetacharset":"UTF-8",
"PageName":"index.html",
"PageSEODescription":"",
"PageSEOKeywords":"",
"PageSEOTitle":"",
"PageScripts":[
],
"PageStyles":[
],
"partials":[
{
"Header":"default"
},
{
"Footer":"default"
}
]
},
{
"PageCss":[
],
"PageExternalCss":[
],
"PageExternalJs":[
],
"PageLayout":"default",
"PageMetaInfo":[
],
"PageMetacharset":"UTF-8",
"PageName":"about.html",
"PageSEODescription":"",
"PageSEOKeywords":"",
"PageSEOTitle":"",
"PageScripts":[
],
"PageStyles":[
],
"partials":[
{
"Header":"default"
},
{
"Footer":"default"
},
{
"Sidebar":"default"
}
]
},
{
"PageCss":[
],
"PageExternalCss":[
],
"PageExternalJs":[
],
"PageLayout":"default",
"PageMetaInfo":[
],
"PageMetacharset":"UTF-8",
"PageName":"about.html",
"PageSEODescription":"",
"PageSEOKeywords":"",
"PageSEOTitle":"",
"PageScripts":[
],
"PageStyles":[
],
"partials":[
{
"Header":"default"
},
{
"Footer":"default"
},
{
"Sidebar":"default"
},
{
"MenuBar":"default"
}
]
},
{
"PageCss":[
],
"PageExternalCss":[
],
"PageExternalJs":[
],
"PageLayout":"default",
"PageMetaInfo":[
],
"PageMetacharset":"UTF-8",
"PageName":"about.html",
"PageSEODescription":"",
"PageSEOKeywords":"",
"PageSEOTitle":"",
"PageScripts":[
],
"PageStyles":[
],
"partials":[
{
"Sidebar":"default"
},
{
"MenuBar":"default"
}
]
}
]
}
]
}
]
function find(key, value) {
let matchingIndex = [];
data[0].configData[1].pageSettings.forEach((i, settingIndex) => {
i.partials.forEach(j => {
let matching = Object.keys(j).filter(k => k === key && j[k] === value);
if(matching && matching.length) {
matchingIndex.push(settingIndex);
};
})
})
console.log('Given values ('+key+','+value+') are found in setting index: '+ matchingIndex);
}
find('Header','default');
find('Sidebar','default')
关于javascript - 使用 Lodash 查找/过滤来自多个 parent 和多个 child 的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49626800/