我有一个场景,我需要为此目的丢弃问题列表中的更改,我将初始值保存到名为“backupQuestions”的变量,并对名为“questions”的原始变量进行更改。问题是,当'questions'的值正在改变时,'backupQuestions'也会更新,即使我不是更新'backupQuestions'的值。
getQuestionsForSection() {
this.questionService.getQuestions(formId, sectionId, false).subscribe((res) => {
if (res.code ===
200 && res.isSuccess === true && res.data['questions']) {
console.log("Questions: ", res.data['questions']);
this.questions = res.data['questions']; //this is the original variable
this.questionsBackup = res.data['questions']; //this is the duplicate variable
} else { this.toastr.show(res.message, "
error "); } }, (err) => { this.toastr.show(err.error.message, "
error "); }); }
当我试图放弃更改时,我将'questionsBackup'重新分配给'问题',但两个变量中的值都相同。
我不知道为什么会发生这种情况,我遇到过类似情况。这是因为棱角分明的架构吗?
提前致谢。
答案 0 :(得分:2)
似乎问题是数组。您应该创建一个数组副本,因为原始和备份在您的示例中具有相同的引用:
this.questionsBackup = res.data['questions'].slice();
如果问题数组中的项目是对象,您也应该创建它们的副本:
this.questionsBackup =res.data['questions'].map((item=>Object.assign({}, item))