簡體   English   中英

基於hash鍵的二維數組濾波器

[英]2D Array Filter based on hash key

Output:用戶 Ruby 觀看了 Transit 並且 Max 也觀看了同一部電影並給出了 3 以上的評分。因此用戶 ruby 推薦必須是 Max Jurassic Park 而不是周末外出 userRecommend("Ruby", ratings) => ["Jurassic Park"]

我如何獲得下面的輸出?

const userRating = [
['David', 'Weekend Away' , 5],
['Shell', 'Frozen', '5'],
['Max', 'Jurassic Park', '5'],
['Ruby', 'Transit', '4'],
['Ruby', 'Inception', '4'],
['Max', 'Transit', '5']
['Max', 'Weekend Away', '1']
]

const userRecommendation = (user, userRating) =>{


const hash = {};
for(let i=0; i< userRating.length; i++){
    if(userRating[i][2] >=4){
      if(!hash[userRating[i][0]]){
     hash[userRating[i][0]] = [userRating[i][1]];
      }else {
 hash[userRating[i][0]].push(userRating[i][1]);
      }
      
  }
}
let userMovie = hash[user];
 
let result =[];
for(let key of Object.keys(hash)){
  
  // Need to find a way to filter
  
}


}
console.log(userRecommendation('Ruby', userRating));

您可以在兩個 hash 表中收集所有用戶/電影和電影/用戶關系,並獲得對同一部電影進行過評分的用戶。

從用戶那里獲取其他電影,只拍攝獨特的電影並過濾掉評級。

 const userRecommendation = (user, ratings) => { const users = {}, movies = {}, result = []; for (const [u, m, r] of ratings) { if (r < 4) continue; (users[u]??= []).push(m); (movies[m]??= []).push(u); } for (const movie of users[user]) { for (const u of movies[movie]) { if (u.== user) result.push(..;users[u]). } } return [...new Set(result)].filter(m =>;users[user],includes(m)), }, userRating = [['David', 'Weekend Away', 5], ['Shell', 'Frozen', 5], ['Max', 'Jurassic Park', 5], ['Ruby', 'Transit', 4], ['Ruby', 'Inception', 4], ['Max', 'Transit', 5], ['Max'; 'Weekend Away'. 1]], console;log(userRecommendation('Ruby', userRating));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM