2017-01-04 6 views
0

"username""name"に等しいかどうかを確認し、それが"id"の場合はどうすればよいですか? nameが存在するかどうかを確認したい場合は、idを取得してください。オブジェクトキーの値が存在するかどうかチェックし、別のキー値を取得する場合

var name="Lisa"; 
var users = [ 
    { id:"1234", username:"Claes", room: "General" }, 
    { id:"5678", username:"Lisa", room: "General" } 
]; 

私はこれで試しましたが、私は何が欠けているのか分かりません。

for (username in users) { 
    if (!users.hasOwnProperty(username)) continue; 
    if (users[username]=name) {  
     nameexists = true; 
     id = users[id]; 
     console.log('user exists'+users[id]); 
    }else{ 
     nameexists = false; 
     console.log('user does not exist'); 
    } 

} 

本当にありがとうございました。

+0

コードには、配列をオブジェクトとして扱うなどの問題があります。ユーザが存在するかどうかを確認するには、アイテムを取得する場合は 'var userExists = users.some(function(item){return item.username === name}); filter()は次のオプションです。 – epascarello

答えて

0

Javascriptでは、for (username in users) { ..の構文を使用して、オブジェクトではなく配列のプロパティを反復処理します。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Arrayhttps://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Statements/for...of

簡単な解決策を参照

(ES6)アレイは、アレイののforeachメソッドまたはfor..of構文の通常の使用反復するhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...in

を見る

users.forEach(function(user) { 
    if (user.username) { // note this will expect a 'truthy' value i.e. except for false, 0, "", null, undefined, and NaN 
    nameexists = true; 
    id = user.id; 
    console.log('user exists'+user.id); 
    } else { 
    nameexists = false; 
    console.log('user does not exist'); 
    } 
} 

BTW:等価性をチェックするには '=='または '==='を使用し、 '='では使用しません。

+0

ありがとう、Ovidio。だから私はあなたのコードの後に​​if(nameexists == true){... thenこれは常にtrueですか? –

+0

ありがとうございました! –

関連する問題