javascript - 如何获取对象数组中的值?
问题描述
我想从下面的数组中收集评级高于 3 的所有电影 ID
let movies = [
{'name': 'Actions', 'movies': [{'id': 1, 'rating': 2},
{'id': 2, 'rating': 1},
{'id': 3, 'rating': 4}]},
{'name': 'Comedy', 'movies': [{'id': 4, 'rating': 3},
{'id': 5, 'rating': 4},
{'id': 6, 'rating': 5}]},
{'name': 'Sci-fi', 'movies': [{'id': 7, 'rating': 1},
{'id': 8, 'rating': 5},
{'id': 9, 'rating': 2}]}
];
我从下面的代码中获得评分高于 3 的 id
let res = movies
.map( m => m.movies
.filter( f => f.rating > 3 )
)
.flat();
console.log(res);
输出
[[object Object] {
id: 3,
rating: 4
}, [object Object] {
id: 5,
rating: 4
}, [object Object] {
id: 6,
rating: 5
}, [object Object] {
id: 8,
rating: 5
}]
我怎样才能摆脱我的输出[object Object]
,rating
只得到扁平的 id 数组?
解决方案
使用 将电影展平为数组Array.flatMap()
,按 过滤rating
,然后映射到id
s:
const movies = [{"name":"Actions","movies":[{"id":1,"rating":2},{"id":2,"rating":1},{"id":3,"rating":4}]},{"name":"Comedy","movies":[{"id":4,"rating":3},{"id":5,"rating":4},{"id":6,"rating":5}]},{"name":"Sci-fi","movies":[{"id":7,"rating":1},{"id":8,"rating":5},{"id":9,"rating":2}]}];
const result = movies
.flatMap(m => m.movies)
.filter(m => m.rating > 3)
.map(m => m.id);
console.log(result);
推荐阅读
- r - 将时间分类到垃圾箱
- python - 我在我的 URL 中使用转换器类型来捕获 Django 中的字符串参数。会影响SEO吗?
- php - 未捕获的错误:未定义的常量 AF_NET - PHP 套接字
- java - 从创建中排除 @Configuration 注释类
- linux - 交换 /dev/sda2 和 /dev/sda3 的数据
- python - 如何在 Django 测验应用程序中正确连接模型
- c++ - 在 C++ 中以编程方式更改 Windows 语言设置
- post - Google 应用脚本将数据发布到 SAOP 网络服务
- c++ - 我如何减少项目中的卷曲
- javascript - 使用 HTML 5 从移动浏览器访问照片