2016-12-17 3 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

ハッシュテーブルを使用して、両方のアレイに対して1回だけ反復することができます。 user_movie_ratingにわたって第1ループに

は、実際の評価対象とし、my_ratingsチェックオーバー第二ループ内のハッシュテーブルを設定し、実際のインデックスにmovie_usersuserIdを押します。

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を使用できます。

関連する問題