Javascript 基于相似对象值匹配json对象时出错

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",

在我的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状态时)

    • 您已经在第二个for循环中写入了关键变量。您需要将它们命名为key1和key2(或更详细的名称)

      如果对
      key
      变量使用相同的名称,请重命名它们并根据需要使用它们

      。。。v
      用于(对象键的var测量(房间测量)){
      var计数相同;
      var countTotal;
      v
      对于(Object.keys的变量室(roomSurveys[survey])){
      ...
      
      这些只是对象,不是json。