在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": "不满意"
}
]
}
]
}
},
vue中计算属性对数据格式的修改
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
3条回答 默认 最新
阿里嘎多学长 2024-07-23 18:51关注以下内容由AIGC及阿里嘎多学长共同生成、有用望采纳:
在Vue 2中,使用计算属性来处理数据格式,特别是进行数据去重,是一种常见的需求。你的实现思路是正确的,并且你已经提供了一个非常好的代码示例。下面是一些可能的改进和注意事项:
-
确保数据的响应性:当你修改Vue实例的数据时,确保这些修改能够触发视图的更新。使用Vue的
this.$set方法来确保响应性。 -
使用
Object.assign或展开运算符:在Vue 2中,使用Object.assign或对象的展开运算符...来复制对象,以避免直接修改原始数据。 -
考虑使用
Map:虽然普通的对象可以用来记录已经出现的score_value,但使用Map可能会更加直观和灵活,尤其是在处理复杂的数据结构时。 -
错误处理:在实际应用中,考虑到数据可能的不一致性,添加一些错误处理逻辑来确保程序的健壮性。
-
性能考虑:如果
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组件中正确地使用这个计算属性,并且根据实际的数据结构和需求进行适当的调整。
解决 无用评论 打赏 举报 编辑记录-