我的函数getComboRefer
返回的不是我期望的;
console.log(getComboRefer(2, 'count'))
应该返回11,但是控制台正在打印undefined
comboReferData =
[
{wagerType: 1,count: 2},
{wagerType: 2,count: 11}
]
function getComboRefer(type, option)
{
comboReferData.forEach(function(item, i){
if(item.wagerType === type){
switch(option)
{
case 'count':
return item.count
case 'wt':
return
default:
}
}
});
}
console.log(getComboRefer(2, 'count'))
有人可以解释我为什么吗?
答案 0 :(得分:2)
您的Process.StandardInput.Write
函数不返回任何内容:它没有getComboRefer()
语句。 return
中的那个将停止循环执行。
.forEach()
答案 1 :(得分:2)
您可以使用comboReferData = [
{wagerType: 1,count: 2},
{wagerType: 2,count: 11}
]
function getComboRefer(type, option) {
let result;
comboReferData.forEach(function(item, i) {
if (item.wagerType === type) {
result = item[option];
}
});
return result;
}
console.log(getComboRefer(2, 'count'))
并返回想要的属性。
find
答案 2 :(得分:1)
首先forEach
循环不返回任何值,也没有从函数中返回任何值,如果要返回值,可以使用map
,也应返回函数的值:
comboReferData = [
{wagerType: 1,count: 2},
{wagerType: 2,count: 11}
]
function getComboRefer(type, option) {
const res = comboReferData.map(function(item, i){
if(item.wagerType === type){
switch(option) {
case 'count':
return item.count
case 'wt':
return
default:
}
}
});
return res
}
console.log(getComboRefer(2, 'count'))
答案 3 :(得分:0)
代替使用foreach方法,您可以尝试如下使用for循环
function getComboRefer(type, option) {
for(let i=0;i<comboReferData.length;i++){
let item=comboReferData[i];
if(item.wagerType === type){
switch(option) {
case 'count':
return item.count
case 'wt':
return
default:
}
}
}
return null;
}
答案 4 :(得分:0)
在将函数传递给forEach
时,您的return
语句属于该函数。它不是您的return
函数的getComboRefer
语句。