第1引数「入れ子の配列」に第2引数で指定したメソッドを各配列に実行する。
■使用例
var arr001 = [5, 1, 7];
var arr002 = [3, 2, 1]
// re = [ [1,5,7], [1,2,3] ]
var re = _.invoke( [arr001, arr002], "sort");
var arr001 = [5, 1, 7];
var arr002 = [3, 2, 1]
// re2 = [ 5, 3 ]
var re2 = _.invoke( [arr001, arr002], "shift");
var arr001 = [5, 1, 7];
var arr002 = [3, 2, 1]
// re3 = [ 7, 1 ]
var re3 = _.invoke( [arr001, arr002], "pop");
■内部構造
_.invoke = function(obj, method) {
// arguments.slice( 2 ); ほとんど args = [ ]; になる。
var args = slice.call(arguments, 2);
// method が関数かどうか確認される。_内で定義されている文字列でないと isFunc = true にならない。
var isFunc = _.isFunction(method);
return _.map(obj, function(value) {
// isFunc = true なら第1引数「obj」の各値を this、引数を args とした method 処理が行われる。
var func = isFunc ? method : value[method];
return func == null ? func : func.apply(value, args);
});
};