繁体   English   中英

根据另一个数组的值将元素添加到数组中

[英]Add elements to an array, according to the value of another array

我有两个 arrays:

  1. video ,带来具有以下元素的对象: id, title and url
  2. watch_videos ,带来具有以下元素的对象: 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM