2016-01-13 48 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