我有一个动态对象数组,其中有无限嵌套的 items
数组,如下所示:
var items = [{
id: '7172hsdr',
item: {},
items: []
},
{
id: '5343rtas',
item: {},
items: [{
id: '4545nrhk',
item: [],
items: [{
id: 'kbkb1212',
item: [],
items: []
}]
}]
}]
我想在此集合中搜索并找到 ID 为 kbkb1212
的对象。我更喜欢用 lodash 来做。
问题是有时我会寻找 ID 为 7172hsdr
的对象,有时我需要例如 kbkb1212
。
我做了什么
我使用了以下搜索第一级的功能。
var item = _.find(items, { id: '7172hsdr' });
它工作正常,但如果我需要 kbkb1212
,它就不需要。
最佳答案
在纯 Javascript 中,您可以使用交互和递归方法在嵌套数据结构中查找项目。
function find(array, id) {
var object;
array.some(function f(a) {
if (a.id === id) {
object = a;
return true;
}
if (Array.isArray(a.items)) {
return a.items.some(f);
}
});
return object;
}
var items = [{ id: '7172hsdr', item: {}, items: [] }, { id: '5343rtas', item: {}, items: [{ id: '4545nrhk', item: [], items: [{ id: 'kbkb1212', item: [], items: [] }] }] }];
console.log(find(items, '7172hsdr'));
console.log(find(items, 'kbkb1212'));
.as-console-wrapper { max-height: 100% !important; top: 0; }
关于javascript - 使用 lodash 进行无限深度搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42175580/