ikemonn's blog

技術ネタをちょこちょこと

【Underscore.js】_.invokeを読んだ

jashkenas/underscore_.invokeを読んだ。

概要

_.invoke(list, methodName, *arguments

入れ子構造になっている配列の各要素の配列に対して関数を実行する。

_.invoke([[1, 4, 5, 2, 3], [10, 30, 20], [100, 78]], 'shift’); // [1, 10, 100]

ソースコード

_.invoke = function(obj, method) {
    var args = slice.call(arguments, 2);
    var isFunc = _.isFunction(method);
    return _.map(obj, function(value) {
      var func = isFunc ? method : value[method];
      return func == null ? func : func.apply(value, args);
    });
  };

第三引数に、実行したい関数に対する引数を指定することもできる。 入れ子の配列の要素に対して、_.mapで関数を実行している。

参考

jashkenas/underscore