weixin_41452476 2024-07-23 18:51 采纳率: 27.3%
浏览 5

vue中计算属性对数据格式的修改

在vue2中,使用计算属性,对于以下数据中,score_value属性的值如果是一样的,返回一个,只保留一个包含score_value的对象,其他的数据不变,原样返回
{
  "create_time": "2024-07-22 16:46:13",
                "update_time": "2024-07-22 16:46:13",
                "third_model_exception": 0,
                "response_time": 1.20474,
                "kpi": {

                    "rouge_score": [
                        {
                            "rouge-1": {
                                "recall": 1.0,
                                "f1_score": 0.999999995,
                                "precision": 1.0
                            }
                        },
                        {
                            "rouge-2": {
                                "recall": 0.0,
                                "f1_score": 0.0,
                                "precision": 0.0
                            }
                        },
                        {
                            "rouge-l": {
                                "recall": 1.0,
                                "f1_score": 0.999999995,
                                "precision": 1.0
                            }
                        }
                    ],
                },
        
                "task_dimension_score": {
                    "prompt": null,
                    "dimensions": [
                        {
                            "name": "我的",
                            "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"
                                }
                            ]
                        },
                        {
                            "name": "你的",
                            "elements": [
                                {
                                    "score_value": 0,
                                    "evaluate_name": "满意"
                                },
                                {
                                    "score_value": 0,
                                    "evaluate_name": "一般"
                                },
                                {
                                    "score_value": 0,
                                    "evaluate_name": "不满意"
                                }
                            ]
                        }
                    ]
                }
            },
  • 写回答

3条回答 默认 最新

  • 阿里嘎多学长 2024-07-23 18:51
    关注

    以下内容由AIGC及阿里嘎多学长共同生成、有用望采纳:


    在Vue 2中,使用计算属性来处理数据格式,特别是进行数据去重,是一种常见的需求。你的实现思路是正确的,并且你已经提供了一个非常好的代码示例。下面是一些可能的改进和注意事项:

    1. 确保数据的响应性:当你修改Vue实例的数据时,确保这些修改能够触发视图的更新。使用Vue的this.$set方法来确保响应性。

    2. 使用Object.assign或展开运算符:在Vue 2中,使用Object.assign或对象的展开运算符...来复制对象,以避免直接修改原始数据。

    3. 考虑使用Map:虽然普通的对象可以用来记录已经出现的score_value,但使用Map可能会更加直观和灵活,尤其是在处理复杂的数据结构时。

    4. 错误处理:在实际应用中,考虑到数据可能的不一致性,添加一些错误处理逻辑来确保程序的健壮性。

    5. 性能考虑:如果task_dimension_score.dimensions数组非常大,考虑性能优化,比如使用Web Workers或者延迟加载技术。

    下面是根据你的代码示例进行的一些改进:

    computed: {
      uniqueTaskDimensions() {
        const seenScores = new Map(); // 使用Map来记录已经出现过的score_value
        const dimensions = this.task_dimension_score.dimensions.map(dimension => {
          const uniqueElements = dimension.elements.reduce((acc, element) => {
            if (!seenScores.has(element.score_value)) {
              seenScores.set(element.score_value, true); // 记录已处理的score_value
              acc.push(element); // 将元素添加到累加器数组
            }
            return acc;
          }, []);
          return { ...dimension, elements: uniqueElements };
        });
    
        // 确保修改后的dimensions数组是响应式的
        this.$set(this.task_dimension_score, 'dimensions', dimensions);
        return this.task_dimension_score;
      }
    }
    

    请注意,这段代码使用了reduce方法来构建去重后的elements数组,并且使用this.$set来确保dimensions数组的响应性。此外,使用Map来记录score_value可以提供更好的性能和可读性。

    最后,确保在你的Vue组件中正确地使用这个计算属性,并且根据实际的数据结构和需求进行适当的调整。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 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实现文字转语音?