JavaScript Функция возврата не верный результат - PullRequest
0 голосов
/ 08 марта 2020

У меня есть массив и функция checkMember. Я хочу проверить, есть ли член в массиве? Но функция checkMember только true, если я вызываю 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

Ответы [ 2 ]

1 голос
/ 08 марта 2020

Это будет работать для вас.

    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){
            return fe01.some(obj => obj.name == name)
        }

console.log(checkMember('Cody'));//true
console.log(checkMember('personX'));//false
1 голос
/ 08 марта 2020

Есть много способов решить эту проблему.

Использование for..loop с break оператор:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...