Vue 中快速统计嵌套对象 selected 值并实时更新 totalScore

你可以使用reduce方法来快速统计record中所有childrenselected的值,并将其赋值给totalScore。同时,你可以使用watch来监听record的变化,当某一个childrenselected改变时,更新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的任何属性或childrenselected发生变化时,watch函数会自动调用calculateTotalScore函数,更新totalScore的值。这样,当某一个childrenselected改变时,totalScore也会跟着改变。


原文地址: https://www.cveoy.top/t/topic/pLhK 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录