weixin_41452476 2024-07-23 19:06 采纳率: 27.3%
浏览 25
已结题

vue2中使用计算属性

在vue2中,使用计算属性,将下面数据


   "task_dimension_score": {
                    "prompt": null,
                    "dimensions": [
                        {
                            "desc": "",
                            "name": "维度1",
                            "weight": 80,
                            "elements": [
                                {
                                    "score_value": 1,
                                    "evaluate_name": "等级1"
                                },
                                {
                                    "score_value": 2,
                                    "evaluate_name": "等级2"
                                },
                                {
                                    "score_value": 3,
                                    "evaluate_name": "等级3"
                                },
                                {
                                    "score_value": 4,
                                    "evaluate_name": "等级4"
                                },
 {
                                    "score_value": 4,
                                    "evaluate_name": "等级6"
                                },
                                {
                                    "score_value": 5,
                                    "evaluate_name": "等级5"
                                }
                            ]
                        },
                        {
                            "desc": "mock dimension",
                            "name": "流畅度",
                            "weight": 20,
                            "elements": [
                                {
                                    "score_value": 0,
                                    "evaluate_name": "满意"
                                },
                                {
                                    "score_value": 0,
                                    "evaluate_name": "一般"
                                },
                                {
                                    "score_value": 0,
                                    "evaluate_name": "不满意"
                                }
                            ]
                        }
                    ]
                }

改成如下形式,如果score_value属性的值一样,只留存一个

  "task_dimension_score": {
                    "prompt": null,
                    "dimensions": [
                        {
                            "desc": "",
                            "name": "维度1",
                            "weight": 80,
                            "elements": [
                                {
                                    "score_value": 1,
                                    "evaluate_name": "等级1"
                                },
                                {
                                    "score_value": 2,
                                    "evaluate_name": "等级2"
                                },
                                {
                                    "score_value": 3,
                                    "evaluate_name": "等级3"
                                },
                                {
                                    "score_value": 4,
                                    "evaluate_name": "等级4"
                                },
                                {
                                    "score_value": 5,
                                    "evaluate_name": "等级5"
                                }
                            ]
                        },
                        {
                            "desc": "mock dimension",
                            "name": "流畅度",
                            "weight": 20,
                            "elements": [
                                {
                                    "score_value": 0,
                                    "evaluate_name": "满意"
                                },

                            ]
                        }
                    ]
                }

  • 写回答

34条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-07-23 19:06
    关注
    获得0.30元问题酬金

    引自免费微信小程序:皆我百晓生

    要在Vue2中使用计算属性来处理这个问题,你可以创建一个新的计算属性,这个属性基于原始task_dimension_score数据进行处理,去除具有相同score_value的重复条目。这里是如何实现它的步骤:

    步骤 1: 定义计算属性

    在Vue组件中,你需要定义一个名为processedTaskDimensionScore的计算属性。这个属性将会遍历原始的task_dimension_score.dimensions数组,并对每个elements数组进行处理,去除重复的score_value对象。

    computed: {
      processedTaskDimensionScore() {
        // 使用map方法处理每一个dimension
        return {
          prompt: this.task_dimension_score.prompt,
          dimensions: this.task_dimension_score.dimensions.map(dimension => ({
            ...dimension, // 复制当前dimension对象
            elements: this.removeDuplicateScores(dimension.elements)
          }))
        };
      }
    }
    

    步骤 2: 实现去重函数

    接下来,定义一个辅助函数removeDuplicateScores,它接收一个元素数组并返回一个新的数组,其中相同score_value的元素只保留一个。

    methods: {
      removeDuplicateScores(elements) {
        const uniqueElementsMap = new Map();
        
        elements.forEach(element => {
          if (!uniqueElementsMap.has(element.score_value)) {
            uniqueElementsMap.set(element.score_value, element);
          }
        });
    
        // 将Map转换回数组
        return Array.from(uniqueElementsMap.values());
      }
    }
    

    步骤 3: 在模板中使用处理后的数据

    最后,在Vue组件的模板部分,使用这个新的processedTaskDimensionScore计算属性来展示处理后的数据,而不是直接使用原始数据。

    <div v-for="dimension in processedTaskDimensionScore.dimensions" :key="dimension.name">
      <h3>{{ dimension.name }}</h3>
      <ul>
        <li v-for="element in dimension.elements" :key="element.evaluate_name">
          {{ element.evaluate_name }} - {{ element.score_value }}
        </li>
      </ul>
    </div>
    

    这样,每次原始task_dimension_score数据变化时,计算属性processedTaskDimensionScore都会自动更新,提供去重后的结果供界面显示。注意,这里我们使用了ES6的Map数据结构来方便地去重,同时保持元素的唯一性。

    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 7月31日
  • 赞助了问题酬金15元 7月23日
  • 创建了问题 7月23日

悬赏问题

  • ¥15 Coze智能助手搭建过程中的问题请教
  • ¥15 12864只亮屏 不显示汉字
  • ¥20 三极管1000倍放大电路
  • ¥15 vscode报错如何解决
  • ¥15 前端vue CryptoJS Aes CBC加密后端java解密
  • ¥15 python随机森林对两个excel表格读取,shap报错
  • ¥15 基于STM32心率血氧监测(OLED显示)相关代码运行成功后烧录成功OLED显示屏不显示的原因是什么
  • ¥100 X轴为分离变量(因子变量),如何控制X轴每个分类变量的长度。
  • ¥30 求给定范围的全体素数p的(p-2)/p的连乘积值
  • ¥15 VFP如何使用阿里TTS实现文字转语音?