为什么函数返回不正确?

时间:2019-04-15 09:40:07

标签: javascript

我的函数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'))

有人可以解释我为什么吗?

5 个答案:

答案 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语句。