2017-07-26 25 views
1
稀有有用lodash資源的

我一個我發現這個爲例LoDash _.invokeMap()參數

var object = { 
 
      firstName: 'Fredrick', 
 
      lastName: 'Townsend', 
 
      first: function() { 
 
       return this.firstName; 
 
      }, 
 
      last: function() { 
 
       return this.lastName; 
 
      } 
 
    }; 
 

 
var methods = _.map(_.functions(object), function(item) { 
 
return [ _.bindKey(object, item) ]; 
 
}); 
 

 
_.invokeMap(methods, 0);

我不理解的第二個參數(0)invokeMap

回答

1

首先,讓我們看看更簡單的例子:

var array = [ 
 
    [function() { console.log('1') }, function() { console.log('2') }], 
 
    [function() { console.log('3') }, function() { console.log('4') }] 
 
]; 
 

 
console.log('_.invokeMap(array, 0)'); 
 
_.invokeMap(array, 0); 
 

 
console.log('_.invokeMap(array, 1)'); 
 
_.invokeMap(array, 1);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>

現在你的代碼:

var methods = _.map(_.functions(object), function(item) { 
    return [ _.bindKey(object, item) ]; // <== ! return array 
}); 

功能迭代器從一個元素_.map回報陣列。因此,在你的例子中,變量methods是兩個元素的數組,每個元素都是一個元素的另一個數組。

enter image description here

當通過0如這裏第二個參數_.invokeMap(methods, 0); lodash將從methods迭代並且調用其存儲在所述陣列的所述第一元件的功能。

_.invokeMap方法的文件。