检查传入参数是否在数组对象中

时间:2015-10-13 17:11:56

标签: javascript

我想检查我的传入参数是否在对象数组中。不知何故,check函数中的if语句总是执行并返回(即使传入参数在数组中)。

// member object 
function member(lname, fname, mname){
   return {
      lname: lname,  // object property
      fname: fname,
      mname: mname
   };
}

var user = [
    member('lastname', 'firstname', 'middlename'),
    member('last', 'first', 'mname'),
    member('l', 'f', 'm'),
    member('ll', 'ff', 'mm')
];

function find(u){
    for(var i = 0; i < user.length; i++){
        if(u === user[i].lname){
            return user[i];
        }
    }
    return null;
}

function check(u) {
    var r = 0;
    for(var i = 0; i < user.length; i++){
        if(find(u).lname !== user[i].lname){
            return "not a user";
        }else if(find(u).lname === user[i].lname){
            return "it's a user";
        }
    }   
}
console.log(check("last"));

1 个答案:

答案 0 :(得分:1)

您已经在&#34;检查&#34;中编码!!counting循环。函数,以便它在第一次迭代时以某种方式返回。也就是说,由于forif都以else结尾,因此无法多次通过循环。

无论如何你根本不需要。如果&#34;找到&#34;函数返回非null,然后你知道它必须是一个用户,并且不需要再做任何工作了:

return