Javascript 基于相似对象值匹配json对象时出错
在我的react应用程序中,我有两个包含用户测验结果的JSON对象。我的目标是使用循环中的某种循环生成roomSurveys中每个测验的答案与userSurvey答案相同的百分比值Javascript 基于相似对象值匹配json对象时出错,javascript,json,reactjs,loops,for-loop,Javascript,Json,Reactjs,Loops,For Loop,在我的react应用程序中,我有两个包含用户测验结果的JSON对象。我的目标是使用循环中的某种循环生成roomSurveys中每个测验的答案与userSurvey答案相同的百分比值 const [userSurvey, setUserSurvey] = useState({ "Q1":"A", "Q2":"B, C, A",
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状态时)
- 您已经在第二个for循环中写入了关键变量。您需要将它们命名为key1和key2(或更详细的名称)如果对
key
变量使用相同的名称,请重命名它们并根据需要使用它们
。。。v
用于(对象键的var测量(房间测量)){
var计数相同;
var countTotal;
v
对于(Object.keys的变量室(roomSurveys[survey])){
...
这些只是对象,不是json。