所以我有这个系统迭代一组用户,如果他们的类型偏好与我的匹配,那么他们将被推入一系列潜在的匹配。但是我想要它以便我无法与自己匹配(即具有相同用户ID的用户,在本例中为'324')但我希望将其余的匹配推送到数组中。
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语句:
if(meUserid == userProfile[i].userid){
//Do something
}
但不确定if声明是什么,有什么想法吗?
结果应该类似于:
potentialMatches = [{user1: {userid: 276, userGenre: 'rock'}}, {user4: {userid: 603, userGenre: 'rock'}}]
谢谢!
答案 0 :(得分:3)
只需将其添加到if语句
即可for (var i = 0; i < userProfile.length; i++) {
if (userProfile[i].userGenre == me.meGenre && userProfile[i].userid != me.meUserid) {
potentialMatches.push(userProfile[i]);
}
}
答案 1 :(得分: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>');
&#13;
答案 2 :(得分:1)
只需在当前循环中添加:
if(userProfile[i].userid != me.meUserid){
potentialMatches.push(userProfile[i]);
}
或者您也可以将其与其他if循环一起添加:
if (userProfile[i].userGenre == me.meGenre && userProfile[i].userid != me.meUserid) {
potentialMatches.push(userProfile[i]);
}