【发布时间】:2016-05-04 22:34:03
【问题描述】:
我创建了一个基本系统来输出与指定用户具有相同类型兴趣的用户。 我想将 for 循环的结果推送到一个数组中,但是我只能将最后一个 for 循环输出推送到数组中,但我希望所有结果都被“推送”。 有什么建议吗?
// User database
var jon = {username: 'Jon', genrePref: 'Rock'};
var lucy = {username: 'Lucy', genrePref: 'Pop'};
var mike = {username: 'Mike', genrePref: 'Rock'};
var luke = {username: 'Luke', genrePref: 'House'};
var james = {username: 'James', genrePref: 'House'};
var dave = {username: 'Dave', genrePref: 'Bass'};
var sarah = {username: 'Sarah', genrePref: 'Country'};
var natalie = {username: 'Natalie', genrePref: 'Bass'};
//userProfile.push()
// User database array
var userProfile = [jon, lucy, mike, luke, james, dave, sarah, natalie];
// Object containing username of logged in user and specification of the loaded track's genre
var trackGenre = {username: 'Harry', trackGenre: 'Rock'};
// For loop listing usernames of users with genre preference the same as the distributed track
for(i = 0; i < userProfile.length; i++){
if(userProfile[i].genrePref == trackGenre.trackGenre){
console.log(userProfile[i].username);
var matchs = [];
matchs.push(userProfile[i].username);
}
}
console.log(matchs)
【问题讨论】:
-
将
var matchs = [];移出循环。您在每次迭代中创建 一个新数组,因此您只能获得最后一次迭代的值。另外,养成声明循环变量的习惯:for (var i。 -
有机会时选择一个答案@mellows
标签: javascript arrays push