Vue 中快速统计嵌套对象 selected 值并实时更新 totalScore
Vue 中快速统计嵌套对象 selected 值并实时更新 totalScore
你可以使用reduce方法来快速统计record中所有children的selected的值,并将其赋值给totalScore。同时,你可以使用watch来监听record的变化,当某一个children的selected改变时,更新totalScore。
下面是修改后的代码示例:
import { reactive, watch } from 'vue';
const record = reactive({});
const totalScore = reactive({});
const response = await defHttp.get({
url: '/beforeBirthProfile/beforeBirthProfile/findPrenatalCheckupTree',
params: {value: 'ehc_cognitive_appraisal'}
});
Object.assign(record, response);
// 初始计算totalScore
calculateTotalScore();
// 监听record的变化
watch(record, () => {
calculateTotalScore();
});
function calculateTotalScore() {
let score = 0;
for (let i in record) {
for (let j in record[i].children) {
score += record[i].children[j].selected;
}
}
totalScore.value = score;
}
在上面的示例中,我们使用calculateTotalScore函数来计算totalScore的值。首先,我们将totalScore声明为响应式对象reactive({})。然后,在calculateTotalScore函数中,我们使用两个嵌套的for循环遍历record中的每个children,并将它们的selected的值累加到score中。最后,我们将score赋值给totalScore.value。
同时,我们使用watch函数来监听record的变化。当record的任何属性或children的selected发生变化时,watch函数会自动调用calculateTotalScore函数,更新totalScore的值。这样,当某一个children的selected改变时,totalScore也会跟着改变。
原文地址: https://www.cveoy.top/t/topic/pLhK 著作权归作者所有。请勿转载和采集!