
本文介绍了如何使用 JavaScript 遍历包含 genre_ids 属性的电影数组,并根据 genres 数组中的 ID 匹配项,为每个电影对象添加一个 genres 属性,该属性包含匹配的 name 值数组。最后,可以选择删除原始的 genre_ids 属性。
实现步骤
假设我们有两个数组,一个是包含电影信息的 movies 数组,每个电影对象都有一个 genre_ids 属性,该属性是一个包含电影类型 ID 的数组。另一个是 genres 数组,包含所有可能的电影类型,每个类型都有 id 和 name 属性。
我们的目标是遍历 movies 数组,对于每个电影对象,根据其 genre_ids 属性,在 genres 数组中查找匹配的类型名称,并将这些名称存储在一个新的 genres 属性中。
立即学习“Java免费学习笔记(深入)”;
示例代码
const genres = [ { id: 28, name: 'Action' }, { id: 12, name: 'Adventure' }, { id: 16, name: 'Animation' }, { id: 35, name: 'Comedy' }, { id: 80, name: 'Crime' }, { id: 99, name: 'Documentary' }, { id: 18, name: 'Drama' }, { id: 10751, name: 'Family' }, { id: 14, name: 'Fantasy' },];const movies = [ { genre_ids: [ 16, 18, 12, 14 ], title: 'Suzume', }];movies.forEach((movie) => { movie.genres = movie.genre_ids.map( (id) => genres.find((genre) => id === genre.id).name ); delete movie.genre_ids; // 可选:删除 genre_ids 属性});console.log(movies);
代码解释
movies.forEach((movie) => { … }): 使用 forEach 循环遍历 movies 数组,对每个电影对象执行操作。
movie.genres = movie.genre_ids.map((id) => { … }): 对于每个电影对象,使用 map 方法遍历其 genre_ids 数组。map 方法会返回一个新数组,其中包含对原始数组每个元素执行指定函数后的结果。
genres.find((genre) => id === genre.id).name: 在 map 方法的回调函数中,使用 find 方法在 genres 数组中查找 id 与当前电影类型 ID 匹配的类型对象。 find 方法返回找到的第一个元素,然后我们访问其 name 属性,获取类型名称。
delete movie.genre_ids: 可选步骤,使用 delete 运算符从电影对象中删除原始的 genre_ids 属性。
注意事项
确保 genres 数组包含所有可能的电影类型,并且每个类型都有唯一的 id。如果 genre_ids 数组中的某个 ID 在 genres 数组中找不到匹配项,find 方法将返回 undefined,会导致错误。为了避免这种情况,可以在 find 方法后添加错误处理机制,例如使用条件判断或 try…catch 语句。map 方法会返回一个新数组,因此 movie.genres 属性会被设置为包含匹配类型名称的新数组。forEach 方法会直接修改原始的 movies 数组。
总结
通过使用 forEach、map 和 find 方法,我们可以方便地根据 ID 匹配数组,并创建新的属性。这种方法可以应用于各种场景,例如根据用户 ID 匹配用户信息,根据产品 ID 匹配产品信息等。掌握这种方法可以提高 JavaScript 编程效率。
以上就是JavaScript:根据ID匹配数组并创建新的属性的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1527547.html
微信扫一扫
支付宝扫一扫