我在JSON / JavaScript中有以下结构:
{
"comments": [
{
"id": 1,
"content": "comment",
"answers": []
},
{
"id": 2,
"content": "comment",
"answers": [
{
"id": 25,
"content": "comment"
}
]
},
{
"id": 3,
"content": "comment",
"answers": [
{
"id": 72,
"content": "comment"
},
{
"id": 105,
"content": "comment"
}
]
},
{
"id": 4,
"content": "comment",
"answers": []
}
]
}
我需要获取一个数组,其中包含每个响应类型注解的ID,例如
[25, 72, 105]
我可以只使用map
、reduce
和filter
吗?
到目前为止,我所做的只是一个评论过滤器,它有一些答案:
const commentsWithAnswers = comments.filter(
(comment) => comment.answers.length !== 0
)
我如何提取数组中每个答案的id?
2条答案
按热度按时间nnvyjq4y1#
相反,您可以使用
.reduce()
和内部.map()
和.filter()
方法。内部的.map()
方法会将给定答案数组中的所有对象转换为ids
数组。.filter()
方法将确保我们只抓取具有content
或"comment"
的对象的id。外部reduce方法用于将内部.map()
方法产生的所有数组整理成一个更大的数组。这是使用扩展语法将旧的累积数组与新Map的值合并来完成的。参见以下示例:
话虽如此,我更喜欢使用
.flatMap()
而不是.reduce()
:f5emj3cl2#
请试试这个例子
看