2016-12-17 92 views
0

我想要做的是創建一個數組,我將保持電影收視率的用戶誰有率相同的電影,我有率..我需要這些用戶在單獨的數組取決於my_ratings大小的長度。這意味着,如果我的收視率從3部電影製作我必須movie_users [1] =誰擁有率都user_ids也是這部電影1 ...同樣爲movie_users [2]和movie_users [3] ..javascript追加到陣列動態索引

for(var i = 0; i < my_ratings.length; i++){ 
     for(var j=0; j < user_movie_rating.length; j++){ 
     if(my_ratings[i].movie_id == user_movie_rating[j].movieId){ 
      movie_users[i].push(user_movie_rating[j].userId); 
      } 
     }        
    } 

我怎樣才能做到這一點?

+2

你可以用一些數據說明你的需求......請看看這裏:[mcve] –

+0

請提供示例數據,以及對這些數據的期望結果。 – trincot

+1

你確定'movie_users [i] .push',這個參考文件是'i'嗎? –

回答

0

您可以使用散列表並對兩個陣列僅迭代一次。

在通過user_movie_rating第一回路設置的哈希表的實際等級的對象和在第二循環中超過my_ratings檢查和推userIdmovie_users與實際指數。

var hash = Object.create(null); 

user_movie_rating.forEach(function (rating) { 
    hash[rating.movieId] = rating; 
}); 

my_ratings.forEach(function (rating, i) { 
    if (hash[rating.movie_id]) { 
     movie_users[i].push(hash[rating.movieId].userId); 
    } 
}); 

使用ES6,您可以使用Set代替對象。