javascript追加到阵列动态索引

问题描述:

我想要做的是创建一个数组,我将保持电影收视率的用户谁有率相同的电影,我有率..我需要这些用户在单独的数组取决于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'吗? –

您可以使用散列表并对两个阵列仅迭代一次。

在通过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代替对象。