Сравните ключевые значения из двух массивов в js

У меня есть два массива, один answers, а другой correct. Оба они абсолютно одинаковы, единственная разница в том, что answers заполняется пользовательским вводом, поэтому я хочу сравнить этот массив с массивом, в котором уже есть решения, чтобы я мог вернуть пользователю оценку.

Я сделал эту функцию, чтобы сравнить их:

const correct = [{
  slot1: "item1",
  slot2: "item2",
  slot3: "item3",
  slot4: "item4",
  slot5: "item5",
  slot6: "item6",
  slot7: "item7",
  slot8: "item8"
}];

var answers = {
  slot1: "",
  slot2: "",
  slot3: "",
  slot4: "",
  slot5: "",
  slot6: "",
  slot7: "",
  slot8: ""
};
function outputTest(){
    //console.info(answers);
    compare();
}
function compare(){
    for (var[key, value] of Object.entries(correct)){
        console.info(answers[key]);
        console.info(correct[key]);
        if (correct[key] == answers[key]){
            score += 1;
        }
    }

    console.info("total score= "+score);
}

outputTest();

Но похоже, что он не получает массив «ответов», он показывает «неопределенное», хотя я его тестировал, и раньше он правильно вставлял значения. Это правильный способ добиться этого?

🤔 А знаете ли вы, что...
JavaScript можно использовать для создания анимаций и игр на веб-страницах.


22
1

Ответ:

Решено
  • Возьмите все ключи для ответов и выполните для них сокращение с начальной суммой, равной нулю.
  • Если ключ из ответов совпадает с ключом из объекта в правильном массиве, увеличиваем сумму

const correct = [{
  slot1: "item1",
  slot2: "item2",
  slot3: "item3",
  slot4: "item4",
  slot5: "item5",
  slot6: "item6",
  slot7: "item7",
  slot8: "item8"
}];

var answers = {
  slot1: "",
  slot2: "item2",
  slot3: "",
  slot4: "",
  slot5: "",
  slot6: "item6",
  slot7: "item7",
  slot8: ""
};

function outputTest() {
  compare();
}

function compare() {
  var total = Object.keys(answers).reduce(function(total, answerKey) {
    if (answers[answerKey] === correct[0][answerKey]) {
      total++;
    }
    return total;
  }, 0);

  console.info("total score = " + total);
}

outputTest();