Javascript 复杂的查找()查询
考虑这个例子:Javascript 复杂的查找()查询,javascript,lodash,Javascript,Lodash,考虑这个例子: var data = { crates: { 'crateID': { fruit: { 'fruitID': { attributes: { type: 'apple'} } }, /*...*/ } }, /*...*/ } 我希望使用\uuu.find(
var data = {
crates:
{ 'crateID':
{
fruit:
{ 'fruitID':
{
attributes:
{ type: 'apple'}
}
},
/*...*/
}
},
/*...*/
}
我希望使用\uuu.find()
(或一组lodash函数)返回一个内部fruit对象
目前,我尝试了var-fruit=u.find(data.crates,{fruit:{attributes:{type:'apple'}}})
,但它返回未定义
,这可能是因为我忽略了键板条箱ID
和水果ID
我也试过了
_.each(data.crates, function (crate) {
var fruit = _.find(crate.fruit, attributes: { type: 'apple'}}});
});
它会在当时找到(或不找到)每箱水果。这里的问题是,它感觉很粗糙,而且还因为它不是同步的,这使得它不适合我的需要
是否有一种方法可以使用Lodash以同步方式查找并返回水果对象(此代码位于必须返回对象的函数中)
我希望返回一个内部水果对象
这意味着您需要在收集的水果上应用。
查找,而不是在板条箱上。你可以这样做
// join fruits from all crates
var fruits = _.merge.apply(_, _.pluck(data.crates, "fruit"));
// or maybe:
var fruits = _.flatten(_.values(_.pluck(data.crates, "fruit")));
var fruit = _.find(fruits, {attributes: { type: 'apple'}})
所有lodash功能(除了明显的
去盎司
、延迟
、延迟
、节流
)都是同步的,返回结果?并不是所有接受回调的操作都是自动异步的。这非常有效,谢谢!)我知道在调用u.find()之前需要一些步骤,但不确定是哪一步。