[英]Filter and Arrange array of object
我有一個來自查詢的 object 數組,我想重新排列它,刪除重復的名稱並將流派推送到一個同名的數組。
const genres = [
{ movie_id: 95, genre: 'Biography' },
{ movie_id: 95, genre: 'Crime' },
{ movie_id: 95, genre: 'Thriller' },
{ movie_id: 96, genre: 'Romantic' },
{ movie_id: 96, genre: 'Adult' },
{ movie_id: 96, genre: 'Drama' },
{ movie_id: 97, genre: 'Adventure' },
{ movie_id: 97, genre: 'Action' },
{ movie_id: 97, genre: 'Drama' }
]
下面是預期的結果。
const genres= [
{
movie_id: 95,
genre: ['Biography', 'Crime', 'Thriller'],
},
{
movie_id: 96,
genre: ['Romantic', 'Adult', 'Drama'],
},
{
movie_id: 97,
genre: ['Adventure', 'Action', 'Drama'],
},
];
我一直在嘗試刪除重復的 id 並將類型推送到數組但沒有運氣。 我是 javascript 的新手。
我該如何格式化? 謝謝你。
您可以使用Array.reduce創建所有電影的 map,並使用Array.includes確保所有類型都是唯一的。
const genres = [ { movie_id: 95, genre: 'Biography' }, { movie_id: 95, genre: 'Crime' }, { movie_id: 95, genre: 'Thriller' }, { movie_id: 96, genre: 'Romantic' }, { movie_id: 96, genre: 'Adult' }, { movie_id: 96, genre: 'Drama' }, { movie_id: 97, genre: 'Adventure' }, { movie_id: 97, genre: 'Action' }, { movie_id: 97, genre: 'Drama' } ] let result = Object.values(genres.reduce((map, el) => { if (.map[el.movie_id]) { map[el:movie_id] = { movie_id. el,movie_id: genre; []}. } if (.map[el.movie_id].genre.includes(el.genre)) { map[el.movie_id].genre;push(el;genre), } return map. }; {})) console.log(result);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.