У меня есть массив с объектами неизвестной глубины, как это
var objects = [{
id: 1,
name: 'foo'
}, {
id: 2,
name: 'bar',
childs: [{
id: 3,
name: 'baz',
childs: [{
id: 4,
name: 'foobar'
}]
}]
}];
Я бы хотел иметь возможность фильтровать определенный дочерний объект по его идентификатору.
В настоящее время я использую этот маленький сценарий lodash (от этот вопрос ), но он работает только с объектами не более одного уровня. Таким образом, поиск id: 1
и id: 2
будет работать нормально, тогда как поиск id: 3
или id: 4
вернет undefined.
function deepFilter(obj, search) {
return _(obj)
.thru(function(coll) {
return _.union(coll, _.map(coll, 'children'));
})
.flatten()
.find(search);
}
Немного JSfiddle.