为什么我在控制台中收到一条错误消息,指出getStoredQuests.push不是Object.addQuestionOnLocalStorage的函数

时间:2019-11-10 17:24:59

标签: javascript

为什么我在控制台中收到一条错误消息,指出getStoredQuests.push不是Object.addQuestionOnLocalStorage上的函数

class Question{
    constructor(id, questionText, options, correctAnswer) {
        this.id = id;
        this.questionText = questionText;
        this.options = options;
        this.correctAnswer = correctAnswer;
    }
}

let questionLocalStorage = {
    setQuestionCollection: (newQuestion) => {
        localStorage.setItem('questionCollection', JSON.stringify(newQuestion));
    },
    getQuestionCollection: () => {
        return JSON.parse(localStorage.getItem('questionCollection'));
    },
    removeQuestionCollection: () => {
        localStorage.removeItem('questionCollection');
    }
}
newQuestion = new Question(questionId, newQuestText.value, optionsArr, corrAnswer);

getStoredQuests = questionLocalStorage.getQuestionCollection();

getStoredQuests.push(newQuestion);

questionLocalStorage.setQuestionCollection(getStoredQuests);

1 个答案:

答案 0 :(得分:0)

错误是因为getStoredQuests不是数组。您可能没有考虑过最初是否在本地存储区中没有问题,然后localStorage.getItem('questionCollection')将返回空字符串,或者可能是您在本地存储区中使用键questionCollection有一些值但不正确要解析为JSON数组对象的格式。

对于第一种情况,解决方案是检查localStorage.getItem('questionCollection')是否为空,然后从getQuestionCollection返回空数组;对于第二种情况,您需要正确格式化数组'(序列化要存储的数组JSON.stringify)”。

要让您的问题正确理解,请打开控制台,看看是否有红线