Javascript 使用';对每个项调用函数的简写。一些';

Javascript 使用';对每个项调用函数的简写。一些';,javascript,lodash,Javascript,Lodash,我使用的是lodash方法。\ux。有些方法 对于谓词,我只是对当前项调用一个方法并返回值 return _.some(items, function(item) { return item.hasChanges(); }); 这就像预期的一样 但是,我想知道是否有一种速记方式来执行此操作 如果hasChanges是一个属性,我可以: return _.some(items, "hasChanges"); 我试图通过以下方式调用该方法: return _.some(items, _.

我使用的是lodash方法
。\ux。有些方法

对于谓词,我只是对当前项调用一个方法并返回值

return _.some(items, function(item) {
    return item.hasChanges();
});
这就像预期的一样

但是,我想知道是否有一种速记方式来执行此操作

如果
hasChanges
是一个属性,我可以:

return _.some(items, "hasChanges");
我试图通过以下方式调用该方法:

return _.some(items, _.invoke(_.identity, "hasChanges"));

但是它似乎没有像预期的那样工作。

如果您真的想走Lodash的路,您可以使用and或构建与自定义谓词等价的谓词

_.some(users, _.partial(_.invoke, _, 'hasChanges'));
谓词可以创建一次,以后使用:

var predicate = _.partial(_.invoke, _, 'hasChanges');
// later...
// a function which only checks, without creating a
// new anonymous function each time.
function check() {
    return _.some(users, predicate);
}
ES6使用数组的
some
函数和箭头函数

items.some(item => item.hasChanged());
\一些
(或大多数一些函数实现)在第一次真正出现时中断循环。类似于
\uuu.invokeMap
的函数将调用每个对象上的函数,而不管结果如何,这比我们已有的自定义谓词效率要低

,但它们不调用对象上的函数


以下操作不起作用:

_.invoke(_.identity, "hasChanges")

它类似于
。.identity.hasChanges()

很棒的信息!ES6语法似乎是最简洁的方法。感谢您澄清了为什么普通的u.invoke不起作用,并提醒我u.identity和占位符完全不同!
_.invoke(_.identity, "hasChanges")