在这种情况下,我想映射对象并获取在replies
中可以找到的答复的数量/长度。我已经从API提取了此数据,但无法获取答复的数量可以在这里找到。
let data = [
{
"feedbackId":32,
"sender":"12345"
"comment":"Test Comment",
"replies":[
{
"feedbackLogId":32,
"feedbackReplyLogId":1,
"comments":"So this is 1",
"createdBy":"Jack",
},
{
"feedbackLogId":32,
"feedbackReplyLogId":2,
"comments":"2nd one",
"createdBy":"Min",
}
],
}
]
这就是我所做的。我只能得到1
作为长度。
let repliesToRender = data.map((item) => {item.replies})
let numReplies = repliesToRender.length
答案 0 :(得分:1)
您的代码中有2个问题,
let repliesToRender = data.map((item) => {item.replies})
应该是
let repliesToRender = data.map((item) => item.replies)
然后map返回您的数组,因此您的repliesToRender将是一个数组的数组,因此您需要
let numReplies = repliesToRender[0].length
或者只是
let numReplies = data.replies.length
let data = [
{
"feedbackId":32,
"sender":"12345",
"comment":"Test Comment",
"replies":[
{
"feedbackLogId":32,
"feedbackReplyLogId":1,
"comments":"So this is 1",
"createdBy":"Jack",
},
{
"feedbackLogId":32,
"feedbackReplyLogId":2,
"comments":"2nd one",
"createdBy":"Min",
}
],
}
]
let repliesToRender = data.map((item) => item.replies)
let numReplies = repliesToRender[0].length
console.log(numReplies)
答案 1 :(得分:1)
您可以使用Array.prototype.map
要计算回复总数,可以使用Array.prototype.reduce
let data = [{"feedbackId":32,"sender":"12345","comment":"Test Comment","replies":[{"feedbackLogId":32,"feedbackReplyLogId":1,"comments":"So this is 1","createdBy":"Jack"},{"feedbackLogId":32,"feedbackReplyLogId":2,"comments":"2nd one","createdBy":"Min"}]},{"feedbackId":32,"sender":"12345","comment":"Test Comment","replies":[{"feedbackLogId":32,"feedbackReplyLogId":1,"comments":"So this is 1","createdBy":"Jack"},{"feedbackLogId":32,"feedbackReplyLogId":2,"comments":"2nd one","createdBy":"Min"}]}]
let repliesCount = data.map(({replies}) => replies.length);
console.log('per replies',repliesCount);
let totalCount = data.reduce((a,c) => a + c.replies.length, 0);
console.log('total replies ',totalCount)
答案 2 :(得分:0)
另一种方法。 如果数据集较大,这将运行得更快,因为它不使用循环。
let data = [
{
"feedbackId":32,
"sender":"12345",
"comment":"Test Comment",
"replies":[
{
"feedbackLogId":32,
"feedbackReplyLogId":1,
"comments":"So this is 1",
"createdBy":"Jack",
},
{
"feedbackLogId":32,
"feedbackReplyLogId":2,
"comments":"2nd one",
"createdBy":"Min",
}
],
}
]
let {replies} = data[0];
console.log(replies.length);
答案 3 :(得分:0)
如果每个对象都需要答复计数,则下面将按顺序返回各个对象的答复计数数组,
let eachObjectsRepliesCount = data.map(({replies}) => replies.length);
如果所有合并对象都需要答复计数,则下面将返回总答复计数,
let repliesToRender = data.map((item) => item.replies)
let totalRepliesCount = repliesToRender[0].length