清理数组中每个项目的调用方法

时间:2016-01-05 16:51:13

标签: javascript jquery underscore.js lodash

是否有更好的方法在数组中的每个项目上调用方法而不是:

_.each(items, function(item) {
    item.method();
});

在Scala中,您可以执行以下操作:

items.foreach(_.method())

想知道javascript中是否有类似内容

5 个答案:

答案 0 :(得分:5)

也许尝试使用built-in foreach

items.forEach(function(item) {
    item.method();
});

浏览器支持目前为pretty much ubiquitous

答案 1 :(得分:5)

由于你的问题是用Underscore标记的,它有一个不错的实用方法:Original Example

_.invoke(items, 'method')

答案 2 :(得分:3)

这是你不喜欢的匿名功能吗?我发现它比这个答案更具可读性,但是如果你真的想要避免它,并且每个项目通过原型共享相同的method,并且你知道至少有一个项目,你可以这样做以避免它:

_.each( items, items[0].method.call );

在ES6中,您还可以使用arrow function

_.each( items, item => item.method() );

答案 3 :(得分:3)

如果您想使用某些lodash函数,我会给您一种功能性方法。

_.each(items, _.method('method'));

_.method

答案 4 :(得分:1)

尝试使用for循环

for (var i=0;i<items.length;items[i++].method());

&#13;
&#13;
var items = [{
  method: function() {
    console.log(0)
  }
}, {
  method: function() {
    console.log(1)
  }
}];
for (var i = 0; i < items.length; items[i++].method());
&#13;
&#13;
&#13;