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

标签 javascript

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

关于javascript - 检查传入的参数是否在数组对象中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33108658/

相关文章:

javascript - 应该添加动态脚本命令?

javascript - 滚动时更改 div 样式

javascript - 检查内部带有mysql调用的for循环是否完成nodejs

javascript - 在 EXTJS 中显示/渲染 XML

javascript - 在 Excel Online 中向表中添加行非常慢

javascript - 使用 javascript 从 itunes 查找中获取 JSON 文件

javascript - Dojo:对小部件存储对象进行排序

javascript - jQuery 多次触发提交表单事件(我认为)

javascript - Jasmine 测试模拟数据还是真实系统和数据源?

javascript - 正则表达式删除字符串中标记之外的文本