find
当我的条件涉及嵌套数组时,我看不到对象的方法。
var modules = [{
name: 'Module1',
submodules: [{
name: 'Submodule1',
id: 1
}, {
name: 'Submodule2',
id: 2
}
]
}, {
name: 'Module2',
submodules: [{
name: 'Submodule1',
id: 3
}, {
name: 'Submodule2',
id: 4
}
]
}
];
这将不起作用,因为它submodules
是一个数组,而不是一个对象。有什么速记可以使这项工作吗?我试图避免手动迭代数组。
_.where(modules, {submodules:{id:3}});
这是我想出的:
_.find(modules, _.flow(
_.property('submodules'),
_.partialRight(_.some, { id: 2 })
));
// → { name: 'Module1', ... }
使用flow(),您可以构造执行所需功能的回调函数。调用时,数据流经每个函数。您想要的第一件事就是submodules
属性,您可以使用property()函数获得它。
然后,将submodules数组馈入some(),如果它包含您要使用的子模块(在本例中为ID ),则返回true 2
。
更换find()
用filter()
,如果你正在寻找多个模块,而不只是第一个发现。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句