【发布时间】:2020-01-28 21:08:54
【问题描述】:
在我的 react 应用程序中,我有两个 JSON 对象,其中包含用户测验结果。我的目标是使用循环中的某种循环生成 roomSurveys 中每个测验的答案与 userSurvey 答案相同的百分比值。
const [userSurvey, setUserSurvey] = useState({ "Q1":"A",
"Q2":"B, C, A",
"Q3":"C" });
const [roomSurveys, setRoomSurveys] = useState({
"user2":{ "Q1":"A",
"Q2":"B, C, C",
"Q3":"B" },
"user3":{ "Q1":"C",
"Q2":"B",
"Q3":"B" },
});
计算共同答案的函数将更新如下状态:
const [roomMatches, setRoomMatches] = useState({
"user2":{ "percentMatch":"1.0"},
"user3":{ "percentMatch": ".30"}
})
这是我目前得到的:
//loop through each user survey in the roomSurvey object
for (var key of Object.keys(roomSurveys)) {
var countSame;
var countTotal;
//loop through each user survey within the roomSurvey object
for (var key of Object.keys(roomSurveys[key])) {
//if answer matches userSurvey answer for the same key,
//add to count same and count total else, add to count total
if(roomSurveys[key] == userSurvey[key]){
countSame++;
countTotal++;
}else{
countTotal++;
}
console.log(key + " -> " + roomSurveys[key])
console.log(key + " -> " + userSurvey[key])
}
var percentMatched = countSame/countTotal;
setRoomMatches([...roomMatches, {key:{['percentMatch']: percentMatched}}]);
}
这是我遇到的错误:
- 在第二个 for 循环中,roomSurveys[key] 值始终未定义
- roomMatches 不可迭代(尝试将新的匹配百分比添加到 roomMatches 状态时)
【问题讨论】:
-
那些只是对象,不是 json。
标签: javascript json reactjs loops for-loop