javascript - 努力循环遍历一组对象
问题描述
特别是我想访问答案的数值,以便稍后总结它们。
以前尝试过的长度,它不适用于对象。
这是我的数据:
const qData = [
{
id: 0,
question: "question 1",
answers: [
{ value: 1, text: "rafael" },
{ value: 2, text: "dontaelo" },
{ value: 3, text: "leonardo" },
{ value: 4, text: "michelangelo" }
]
},
{
id: 1,
question: "question 2",
answers: [
{ value: 1, text: "rafael" },
{ value: 2, text: "dontaelo" },
{ value: 3, text: "leonardo" },
{ value: 4, text: "michelangelo" }
]
}
];
export default qData;
我试图对答案值求和,如下所示:
handleShowScore = () => {
var i, newScore;
var a = qData.answers;
for (i = 0; i < a.length; i++) {
newScore = newScore + a[i].value;
}
}
解决方案
如果我正确理解了您的问题,下面的示例可以满足您的要求
// Loop through all questions. Each question is stored in "q".
qData.forEach((q) => {
console.log('qData:', q);
// Make an array of all answer values
const answerValues = q.answers.map((a) => {
return a.value;
});
console.log('answerValues:', answerValues);
// Sum all answer values together
const totalValues = answerValues.reduce((a, b) => a + b, 0)
console.log('totalValues: ', totalValues);
});
如果您想获得特定ID的总和
// Find specific ID.
const question = qData.find((q) => q.id === 0);
// Make an array of all answer values
const answerValues = question.answers.map((a) => {
return a.value;
});
console.log('answerValues:', answerValues);
// Sum all answer values together
const totalValues = answerValues.reduce((a, b) => a + b, 0)
console.log('totalValues: ', totalValues);
推荐阅读
- python - 将格式为 1st、2nd..nth-Month-YYYY 的日期字符串转换为 python 日期对象
- sql - 如何选择未来 30 天内的生日
- wordpress - 所有自定义字段都无法正常工作
- python-3.x - 如何修复此异常使用 %tb 查看完整引用。系统退出:1?
- c# - 如何在从 Shopify API 获取数据时修复“对象引用未设置为对象的实例”错误
- sql-server - 是否应该使用 NVARCHAR 将“重音字符”保存到 Sql Server 中?
- ios - .IsEmpty 返回 False
- itext - 如何对齐跨越多个页面的 PdfPCell 底部?
- c# - 如何在 C# 中将字符串分隔为数组?
- php - 我想在 where() 之后使用 orderBy () 和 take(),但它正在查询与我想要的答案相反的结果