从外部返回函数的值

时间:2016-07-12 14:57:21

标签: javascript

我正在比较情侣信息而不是尝试获取正确的对象。 但是我无法将输出返回给它自己的函数。

    channelUserRight: function(channel, nickname){

        userlist.forEach(function(chaninfo) {
            if(chaninfo.channel === channel && chaninfo.name === nickname){
                // Whenever I do console.log it shows me output
                console.log(chaninfo);
                return chaninfo;
            }           
        }); 

    }
// Here it shows me 'undefined'
console.log(channelUserRight(channel, user))
channelUserRight(channel, user)

所以在函数内部我得到了正确的对象但不在函数之外。

2 个答案:

答案 0 :(得分:3)

您只需返回forEach函数的回调,如果您使用过滤器,则可以返回已过滤的数组,或直接返回第一个索引

channelUserRight: function(channel, nickname){
    var list = userlist.filter(function(chaninfo) {
        return chaninfo.channel === channel && chaninfo.name === nickname;
    });

    return list.length ? list.shift() : null;
}

答案 1 :(得分:1)

在这种情况下,您需要在功能级别设置一个变量并使用它来返回您的值:

function(channel, nickname){
  var _chaninfo;

  userlist.forEach(function(chaninfo) {
     if(chaninfo.channel === channel && chaninfo.name === nickname) {
        _chaninfo = chaninfo;
     }
  }); 

  return _chaninfo;
}

问题是return从用于迭代的功能块返回。 @ adeneo使用filter的方法实际上更干净,所以我建议使用它,但这对你的直接问题是一个“修复”。