我使用Lodash搜索嵌套数组,如果找到匹配的数组,则返回该对象。
对于每个对象,搜索总线4。如果找到,则返回该对象(在本例中为学校'xyz')。
var schools = [
{
"id":1,
"school":"abc",
"bus":[
{
"id":1,
"name":"first bus"
},
{
"id":2,
"name":"second bus"
}
]
},
{
"id": 2,
"school":"xyz",
"bus":[
{
"id":3,
"name":"third bus"
},
{
"id":4,
"name":"fourth bus"
}
]
}
]这是我到目前为止所知道的:
_.forEach(schools, function(school){console.log(_.where(school.bus, {'id':4}))})只是把结果吐出来。有点用。
发布于 2015-11-13 01:02:09
首先,我们应该决定使用什么函数。Filter https://lodash.com/docs#filter适合我们的情况,因为我们希望返回通过评估的内容。
困难的部分是精心设计评估。lodash确实支持通过嵌套数组进行搜索,一旦你学会了,它的语法实际上是相当直观的。
_.filter(schools,
{
bus: [{id: 4}]
}
);而不是如果总线不是数组,在这种情况下它将
_.filter(schools,
{
bus: {id: 4}
}
);注意: filter总是会返回一个数组,所以如果你只想要一个对象,一定要在它后面追加一个。
https://stackoverflow.com/questions/33676823
复制相似问题