我想检查我的传入参数是否在对象数组中。不知何故,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"));
答案 0 :(得分:1)
您已经在&#34;检查&#34;中编码!!counting
循环。函数,以便它在第一次迭代时以某种方式返回。也就是说,由于for
和if
都以else
结尾,因此无法多次通过循环。
无论如何你根本不需要。如果&#34;找到&#34;函数返回非null,然后你知道它必须是一个用户,并且不需要再做任何工作了:
return