javascript追加到数组动态索引

时间:2016-12-17 12:25:38

标签: javascript

我想要做的是创建一个数组,在其中我将保持对我评价相同电影的用户的电影评级。我需要这些用户在单独的数组中,具体取决于my_ratings大小的长度。这意味着,如果我的收视率来自3部电影我必须有movie_users [1] =所有user_ids谁也有这部电影1 ...相同的movie_users [2]和movie_users [3] ..

    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);
          }
       }                             
   }

我该怎么做?

1 个答案:

答案 0 :(得分:0)

您可以使用哈希表,只对两个数组进行一次迭代。

user_movie_rating上方的第一个循环中,使用实际评级对象设置哈希表,在第二个循环中设置my_ratings,然后将userId推送到movie_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而不是对象。