我对Lodash中可用的所有功能感到有些不知所措,所以我希望有人可以指出我确定存在的那个能为我做以下事情的人。我希望能够传递一个数组和一个搜索条件,让它遍历所有匹配的项目,允许我为每个项目运行一个函数。我现在拥有的是类似于此的东西:
_.each(myArray, (item) => {
if (item.field=="whatever") {
console.log("Matched by "+item.name);
}
});
当然,这很好用。只是我确定Lodash有办法让我以某种方式将item.field=="whatever"
移动到函数参数中,如果可以的话,我更愿意采用更惯用的Lodash方法。
答案 0 :(得分:2)
只是我确定Lodash有办法让
item.field == "whatever"
以某种方式将_.filter(myArray, { field: 'whatever' });
移动到函数参数中
如果您想根据传入的参数找到数组中的所有匹配项,那么您可以使用_.filter
method,它可以在内部使用_.matches
shorthand:
_.each(_.filter(myArray, { field: 'whatever' }), item => {
console.log("Matched by " + item.name);
});
但是,如果你想为每场比赛做点什么,你仍然需要循环遍历项目:
_.each()
或者,如果您想要一种不同的写入方式,可以使用lodash object wrapper, _()
包装已过滤的项目,这实际上启用了链接,从而允许您链接_(_.filter(myArray, { field: 'whatever' })).each(item => {
console.log("Matched by " + item.name);
});
方法:
var matchedItems = _.filter(myArray, { field: 'whatever' });
_(matchedItems).each(item => {
console.log("Matched by " + item.name);
});
或者更易阅读的版本:
listen_addresses = '*'
local all all md5
host all all all md5
就个人而言,我可能会保留你最初写的内容,因为它简短,易读且易于维护。