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

Check if the pass-in parameter is in the array object

本文关键字:数组 对象 是否 参数 检查      更新时间:2023-09-26

我想检查传入参数是否在对象数组中。不知何故,检查函数中的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"));

您已经在"check"函数中编写了for循环,以便它在第一次迭代时以某种方式返回。也就是说,没有办法通过循环超过一次,因为ifelse都以return结束。

反正你也不需要。如果"find"函数返回非空,那么您就知道它一定是一个用户,并且不需要再做任何工作:

function check(u) {
    var r = 0;
    return find(u) !== null ? "it's a user" : "not a user";
}