[英]Add elements to an array, according to the value of another array
我有两个 arrays:
id, title and url
。watched, video_id
。我需要检查视频数组中的哪些对象的id等于video_id ,所有满足此条件的对象,添加一个名为 watch 的新元素,其值为 true,那些没有的对象,添加一个 watch ,值为 false .
我知道我可以使用过滤器执行此操作,并包含操作 arrays 的函数,但是,我无法理解一种有效的方式。
我正在学习如何处理 arrays。
编辑:@Prerak Sola 当我试图检查watched_videos 中是否有相同的ID 时,我停在这里。
const module_videos = videos.filter((v) =>
v.id.include(watched_videos.video_id)
);
我收到错误:“v.id.include 不是函数”,
编辑2:
我需要收到以下结果:
videos = [{
"id": 1,
"title": "one",
"url": "/v1",
"watched": true
}, {
"id": 2,
"title": "two",
"url": "/v2"
"watched": false
}
];
var videos = [{ "id": 1, "title": "one", "url": "/v1" }, { "id": 2, "title": "two", "url": "/v2" }, { "id": 3, "title": "three", "url": "/v3" }, { "id": 4, "title": "four", "url": "/v4" } ]; var watched_videos = [ { "video_id": 7 }, { "video_id": 2 }, { "video_id": 3 }, { "video_id": 8 } ]; watched_videos.map(watchedVideo => { let filtered = videos.filter(video => watchedVideo.video_id === video.id); return watchedVideo.watched = filtered.length > 0; }) console.log(watched_videos)
我会那样做
const video = [ { id: 12, title: 'test1', url: 'https://stackoverflow.com' }, { id: 2, title: 'test4', url: 'https://stackoverflow.com' }, { id: 5, title: 'test2', url: 'https://stackoverflow.com' } ]; const watched_videos = [ { watched: true, video_id: 12 }, { watched: false, video_id: 32 }, { watched: true, video_id: 2 } ]; const newListVideos = []; video.forEach(item => { const searchResult = watched_videos.filter(element => element.video_id === item.id); if (searchResult.length > 0) { newListVideos.push(...searchResult); } }); console.log(newListVideos);
您可以创建一个查找 map 观看的视频 ID
const videos = [{ "id": 1, "title": "one", "url": "/v1", }, { "id": 2, "title": "two", "url": "/v2", }]; const watched = [{ watched: true, video_id: 1 }, { watched: false, video_id: 2 }, ] const watched_video = watched.filter(x => x.watched).map(x => x.video_id); videos.forEach(v => { v.watched = watched_video.includes(v.id); }); console.log(videos);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.