首页 > 解决方案 > JavaScript 返回函数不正确的结果

问题描述

我有一个数组和一个函数 checkMember。我想检查一下,该成员是否在数组中?但 checkMember 函数只有在我调用 checkMember('Cody') 时才为真。我不明白。请帮我!

var fe01 = [
  {name: 'Giang', fee: 5, fea: 6},
  {name: 'Zack', fee: 7, fea: 7},
  {name: 'Henry', fee: 8, fea: 8},
  {name: 'Cody', fee: 9, fea: 9}
];    

function checkMember(name){
  var result;
  for(var i = 0; i < fe01.length; i++){
     console.log(`${fe01[i].name}`)
     if(fe01[i].name == name){
       //console.log(true);
       result = true;
     } else{
       //console.log(false)
       result = false;
     }
  }     
  return result;
}

console.log(checkMember('Cody'));//true
console.log(checkMember('Giang'));//false

标签: javascriptfunction

解决方案


有很多方法可以解决这个问题。

使用for..loopwithbreak语句:

var fe01 = [
            {name: 'Giang', fee: 5, fea: 6},
            {name: 'Zack', fee: 7, fea: 7},
            {name: 'Henry', fee: 8, fea: 8},
            {name: 'Cody', fee: 9, fea: 9}
        ];

function checkMember(name){
    var result;
    for(var i = 0; i < fe01.length; i++){
        //console.log(`${fe01[i].name}`)
        if(fe01[i].name == name){
            //console.log(true);
            result = true;
            break;     // jump out of the loop here
        } else{
            //console.log(false)
            result = false;
        }
    }
    return result;
}
console.log(checkMember('Cody'));//true
console.log(checkMember('Giang'));//true

使用some()方法:

var fe01 = [ {name: 'Giang', fee: 5, fea: 6}, {name: 'Zack', fee: 7, fea: 7},
    {name: 'Henry', fee: 8, fea: 8}, {name: 'Cody', fee: 9, fea: 9}];

function checkMember(search){
    return fe01.some(({name}) => name == search);
}
console.log(checkMember('Cody'));//true
console.log(checkMember('Giang'));//true
console.log(checkMember('abc'));//false


推荐阅读