带有功能的Lodash地图:如何传递给另一个参数的功能?

时间:2018-03-16 15:43:13

标签: javascript lodash

我正在以这种方式使用lodash地图

const newCollection = _.map(
    responseJson.OldCollection, 
    AddDetailsToSingleItems
);

具有

function AddDetailsToSingleItems (item ) {
 ... 
}

我问你,将参数传递给这个函数的正确语法是什么。

我想要

function AddDetailsToSingleItems (item, myNewParam ) {
 ... 
}

(请注意myNewParam)。

我不知道如何告诉loadsh map将每个项目传递给我的函数以在调用AddDetailsToSingleItems时传递一个参数

2 个答案:

答案 0 :(得分:3)

您还没有解释myNewParam来自哪里,但我假设您在某处有这些数据。

Lodash map(就像普通的JavaScript map一样)接受一个函数作为其第二个参数,在所提供的列表的所有元素上运行。你可以传递一个匿名函数:

_.map(
  responseJson.OldCollection, 
  item => AddDetailsToSingleItems(item, myNewParam)
);

答案 1 :(得分:1)

您可以创建一个知道myNewParam值的函数,但只接受item参数,如下所示:

var myNewParam = 'param_value';

var AddDetailsFn = function(m) {
  return function(item) {
    return AddDetailsToSingleItems(item, m);
  };
};

const newCollection = _.map(
    responseJson.OldCollection, 
    AddDetailsFn(myNewParam)
);

这样,_.map只能看到一个带有单个参数的函数。 AddDetailsFn返回一个函数,该函数接受一个参数,但已经捕获了myNewParam的值。你也可以更简洁:

const newCollection = _.map(
    responseJson.OldCollection,
    function(item) { return AddDetailsToSingleItems(item, myNewParam); }
);