下划线 _.each 和 grunt

undescore _.each and grunt

我在使用下划线库时收到来自 Grunt 的警告:

let userId = 502;
let member = _.find($scope.data.userReports, function (member) {
     return member.person.id === userId;
});

不要在循环中创建函数。

当我尝试纠正这种情况时,我没有从下划线获取成员(未定义,但成员也没有传递到 checkUserFunction)。

let userId = 502;
var member = _.find($scope.data.userReports, checkUserFunction(member, userId));

let checkUserFunction = (member, dataKey) => {
    if(parseInt(member.person.id) === parseInt(dataKey)){
        return true;
    }
    return false;
};

你的问题是你是这样调用 find 的:

_.find($scope.data.userReports, checkUserFunction(member, userId));

什么时候你应该这样称呼它:

_.find($scope.data.userReports, checkUserFunction);

通过在传递 checkUserFunction 时包含大括号,您传递的不是函数,而是函数的 return 值。 另外,find 的谓词只接受一个参数,所以我认为你需要的更像这样:

let userId = 502;
var member = _.find($scope.data.userReports, checkUserFunction);

let checkUserFunction = (member) => {
    return parseInt(member.person.id) === userId;
};