2016-05-08 6 views
3

このシステムはユーザーのグループを反復処理し、そのジャンルの環境設定が鉱山と一致する場合、潜在的な一致の配列にプッシュされます。しかし、私は自分自身と一致することができないようにしたいですが(つまり、同じユーザーIDを持つユーザー、この場合は '324')、残りの一致を配列に挿入します。JavaScript - 条件がtrueの場合、特定の要素が配列にプッシュされないようにする

if(meUserid == userProfile[i].userid){ 
    //Do something 
} 

が、if文を作るために何がわからないよ、任意のアイデア:

var me = {meUserid: 324, meGenre: 'rock'}; 

var users = { 
    user1: {userid: 276, userGenre: 'rock'}, 
    user2: {userid: 335, userGenre: 'jazz'}, 
    user3: {userid: 324, userGenre: 'rock'}, //Same userid and genre 
    user4: {userid: 603, userGenre: 'rock'}, 
    user5: {userid: 502, userGenre: 'country'}, 
}; 

// Users array 
var userProfile = []; 

// Populate users array 
for(var key in users) { 
    userProfile.push(users[key]); 
} 

var potentialMatches = []; 

for(var i = 0; i < userProfile.length; i++){ 

    // If genre matches that of another user's genre preference, push these compatible users into matches array 
    if(userProfile[i].userGenre == me.meGenre){ 

     potentialMatches.push(userProfile[i]); 
    } 
} 

console.log(potentialMatches); 

私はそれはの線に沿って何かif文になります知っていますか?

potentialMatches = [{user1: {userid: 276, userGenre: 'rock'}}, {user4: {userid: 603, userGenre: 'rock'}}] 

ありがとう:

結果は次のようになります!

答えて

3

声明

for (var i = 0; i < userProfile.length; i++) { 
    if (userProfile[i].userGenre == me.meGenre && userProfile[i].userid != me.meUserid) { 
    potentialMatches.push(userProfile[i]); 
    } 
} 
1

ちょうど現在のループ内でこれを追加する場合だけにこれを追加します。

if(userProfile[i].userid != me.meUserid){ 
    potentialMatches.push(userProfile[i]); 
} 

またはループ場合は、他とそれを追加する可能性があります。

if (userProfile[i].userGenre == me.meGenre && userProfile[i].userid != me.meUserid) { 
    potentialMatches.push(userProfile[i]); 
    } 
2

Array#filterを使用し、Array#mapでアレイを構築することができます。

var me = { meUserid: 324, meGenre: 'rock' }, 
 
    users = { user1: { userid: 276, userGenre: 'rock' }, user2: { userid: 335, userGenre: 'jazz' }, user3: { userid: 324, userGenre: 'rock' }, user5: { userid: 502, userGenre: 'country' } }, 
 
    result = Object.keys(users).filter(function (k) { 
 
     return users[k].userid === me.meUserid && users[k].userGenre === me.meGenre; 
 
    }).map(function (k) { return users[k] }); 
 

 
document.write('<pre>' + JSON.stringify(result, 0, 4) + '</pre>');

関連する問題