Javascript 比较传入函数参数和数组对象属性

Javascript 比较传入函数参数和数组对象属性,javascript,Javascript,要测试我的查找函数是否可以使用传入参数来匹配用户数组中的对象属性。我认为问题在于if语句中遇到的问题,我不确定这是比较两者的正确方法 // member object function member(lname, fname, mname){ return{ lname: lname, // object property fname: fname, mname: mname }; } var user = [ member('lastname',

要测试我的查找函数是否可以使用传入参数来匹配用户数组中的对象属性。我认为问题在于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(lname){
    for(var i = 0; i < user.length; i++){
       if(lname === user[i][lname]){       
          return(console.log(lname));
       }else{
          return null;
       }
    }
}

console.log(find("last"));
//成员对象
功能成员(lname、fname、MNName){
返回{
lname:lname,//对象属性
fname:fname,
mname:mname
};
}
变量用户=[
成员('lastname','firstname','middlename'),
成员('last','first','mname'),
成员(“l”、“f”、“m”),
成员('ll','ff','mm')
];
函数查找(lname){
对于(变量i=0;i
返回值为null,如果我取出else语句,它将返回undefined。 任何帮助都很好。谢谢

  • 团队不存在。听起来您指的是
    用户
    数组
  • 通过执行
    user[i].lname来访问lname属性,而不是
    user[i][lname]
  • 如果在else中返回null,则不会继续检查结果。您的返回应该在for循环之外,以表明我们已经到达终点,并且没有成功的返回 工作示例:
    //成员对象
    功能成员(lname、fname、MNName){
    返回{
    lname:lname,//对象属性
    fname:fname,
    mname:mname
    };
    }
    变量用户=[
    成员('lastname','firstname','middlename'),
    成员('last','first','mname'),
    成员(“l”、“f”、“m”),
    成员('ll','ff','mm')
    ];
    函数查找(lname){
    对于(变量i=0;i为什么要循环

    function find(lname){
      return user.filter(function(item){
          return item.lname === lname;
      });
    }
    
    相同但返回第一次命中:

    function find(lname){
      return user.filter(function(item){
          return item.lname === lname;
      })[0];
    }
    

    在我看来,
    team
    user
    不是同一个变量?team在哪里?同样,如果你错过了,不要在循环中返回,继续循环再试一次。另外,
    team[i][lname]
    应该是
    team[i]。lname
    是的,我忘了更改它。现在修复它。您也可以做一些事情。如果您总是希望第一个匹配,您可能希望将[0]放在返回值的末尾:}[0]@Fievelyartsen是的,我知道,这是我的第一个想法,但后来我认为函数的名称是
    find
    ,所以它必须按照它所说的那样做。