2015-10-13 48 views
0

我想檢查傳入參數是否在對象數組中。不知何故,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

一個'return'聲明立即退出函數。 – Pointy

回答

1

你編碼的for循環中的「檢查」功能,使其返回,單程或其他的,在第一次循環。也就是說,由於ifelse都以return結尾,因此無法多次通過循環。

反正你不需要。如果「發現」功能返回非空的,那麼你知道它必須是一個用戶,而且也沒有必要做任何更多的工作:

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