我有一个像这样的对象的数组:
[
{ phase: 1, fields: [ { id: 1, type: 'string' }, { id: 2, type: 'date' } ] },
{ phase: 2, fields: [ { id: 3, type: 'date' }, { id: 4, type: 'date' } ] },
{ phase: 3, fields: [ { id: 5, type: 'string' }, { id: 6, type: 'date' } ] },
{ phase: 4, fields: [ { id: 7, type: 'date' }, { id: 8, type: 'string' } ] },
]
我想搜索这个数组并返回一个只包含date
类型字段的数组。
我一直在关注lodash函数filter
和where
,但似乎过滤器只能查看一级深度的项目,而我的数组有多个级别,而我的搜索标准位于第二级数组。解决这个问题的最佳策略是什么?
答案 0 :(得分:0)
您可以使用javascript reduce
功能并在其中使用where
:
var elements = array.reduce(function(previous, current) {
return previous.concat(_.where(current.fields, { type : 'date' }));
}, []);
Lodash版本:
var elements = _.reduce(array, function(previous, current) {
return previous.concat(_.where(current.fields, { type : 'date' }));
}, []);
答案 1 :(得分:0)