2016-01-13 47 views
8

我有下面的代碼,任何人都可以看出其中的差別:lodash的_.map和_.pluck有什麼區別?

let _ = require('lodash'); 

let arr = [ 
    {'fname':'Ali', 'lname': 'Yousuf'}, 
    {'fname': 'Uzair', 'lname': 'Ali'}, 
    {'fname': 'Umair', 'lname': 'Khan'} 
]; 

_.map(arr, 'fname'); 
_.pluck(arr, 'fname'); 

輸出是一樣的,這兩個功能都沒有變異arr

回答

14

在使用它們的方式中,它們基本上也是這樣。這就是爲什麼.pluck()已從Lodash v4.0.0中刪除,轉而使用.map()作爲第二個參數的字符串。

下面是來自changelog相關摘錄:

贊成_.map刪除_.pluck與iteratee速記

var objects = [{ 'a': 1 }, { 'a': 2 }]; 

// in 3.10.1 
_.pluck(objects, 'a'); // → [1, 2] 
_.map(objects, 'a'); // → [1, 2] 

// in 4.0.0 
_.map(objects, 'a'); // → [1, 2] 
+1

是,'map'可以接收'function'或字符串' '作爲一個參數,如果它收到一個'string',它的行爲就像'pluck'。否則,它的行爲就像'Array.prototype.map'。 – gabrielperales