我正在比较情侣信息而不是尝试获取正确的对象。 但是我无法将输出返回给它自己的函数。
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)
所以在函数内部我得到了正确的对象但不在函数之外。
答案 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
的方法实际上更干净,所以我建议使用它,但这对你的直接问题是一个“修复”。