当前位置: 首页 > news >正文

对象键值对内容映射

对象映射:

数据字段的英文名映射为更易理解的中文标签进行展示。即数据字段英文名 -> 中文描述

作用:

  • 提高代码的可读性。
  • 支持数据字段与展示内容的解耦,方便修改展示语言或样式,而无需改动数据源

映射特点:

  1. 映射的灵活性
    // 只需更改 fieldMapping 的内容即可修改字段的展示标签。
    const fieldMapping = {name: "Full Name",age: "Years Old",email: "Email Address",phone: "Phone Number",
    };
    

  2. 适应数据模型的变化
    // 数据模型发生变化时,映射机制使组件更易于扩展。例如新增字段 address
    const fieldMapping = {...fieldMapping,address: "地址",
    };
    

  3. 支持复杂数据结构
    // 如果字段是嵌套对象,可以用自定义函数处理映射
    const userData = {name: "张三",address: { city: "北京", street: "朝阳路" },
    };const fieldMapping = {name: "姓名","address.city": "城市","address.street": "街道",
    };const getNestedValue = (obj, key) =>key.split('.').reduce((o, k) => (o ? o[k] : 'N/A'), obj);<template v-for="(label, field) in fieldMapping"><div class="info-item"><strong>{{ label }}:</strong> {{ getNestedValue(userData, field) }}</div>
    </template>
    

  4. 数据与视图解耦
    // 数据的命名和存储结构独立于视图,视图仅关心展示格式。
    // 例如:
    // 数据中使用英文命名 email,方便开发和 API 兼容。
    // 界面展示为 "电子邮箱",方便用户阅读。
    

应用:

组件封装:

<template><div class="user-info" v-if="userData"><template v-for="(label, field) in fieldMapping" :key="field"><div class="info-item"><!-- 在组件中,使用了 userData[field] || 'N/A' 来处理可能的字段缺失问题:
如果 userData 中某字段不存在,渲染 "N/A",避免页面显示 undefined 或报错。
这种处理方式是简单的数据保护策略。--><strong>{{ label }}:</strong> {{ userData[field] || 'N/A' }}</div></template></div><div v-else>Loading...</div> <!-- 显示 loading,直到 data 准备好 -->
</template><script setup>
const props = defineProps({userData: {type: Object,required: true,default: () => ({name: '张三',age: 28,email: 'zhangsan@example.com',phone: '1234567890'})}
})
// fieldMapping 的键是 userData 对象的字段名(如 name、age),值是字段对应的中文标签(如 "姓名"、"年龄")。
const fieldMapping = {name: "姓名",age: "年龄",email: "电子邮箱",phone: "联系电话",
};
</script><style scoped>
.user-info {padding: 20px;background-color: #f9f9f9;border-radius: 8px;box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
}.info-item {margin-bottom: 10px;font-size: 16px;
}strong {color: #333;
}
</style>

组件使用:

<template><Change :userData="list"></Change>
</template><script setup>
import Change from '../components/change.vue'
const list = {name: '张三',age: 28,email: 'zhangsan@example.com',phone: '1234567890'
}
</script><style></style>

效果:

http://www.lryc.cn/news/492657.html

相关文章:

  • 《生成式 AI》课程 第7講:大型語言模型修練史 — 第二階段: 名師指點,發揮潛力 (兼談對 ChatGPT 做逆向工程與 LLaMA 時代的開始)
  • 学习C#中的反射
  • 学习使用jquery实现在指定div前面增加内容
  • react项目初始化配置步骤
  • vue使用百度富文本编辑器
  • 异常处理(6)自定义异常
  • 微软正在测试 Windows 11 对第三方密钥的支持
  • 时间的礼物:如何珍视每一刻
  • 初级 Python 数据脱敏技术及应用
  • 1063 Set Similarity (25)
  • Web登录页面设计
  • 【大数据学习 | Spark】Spark on hive与 hive on Spark的区别
  • 软件测试丨Pytest 第三方插件与 Hook 函数
  • Python学习35天
  • IO基础(字符集与字符流)
  • LLM应用-prompt提示:RAG query重写、相似query生成 加强检索准确率
  • [python脚本处理文件入门]-17.Python如何操作Excel文件的读写
  • 深度理解进程的概念(Linux)
  • 【C++】STL容器中的比较函数对象
  • 深度学习基础02_损失函数BP算法(上)
  • 6.584-Lab4A
  • 语义版本控制
  • 深入理解HTML基本结构:构建现代网页的基石
  • 一体化数据安全平台uDSP 入选【年度创新安全产品 TOP10】榜单
  • 【机器学习】机器学习的基本分类-监督学习(Supervised Learning)
  • Oracle之提高PLSQL的执行性能
  • [VSCode] vscode下载安装及安装中文插件详解(附下载文件)
  • PHP中类名加双冒号的作用
  • 前端编程训练 异步编程篇 请求接口 vue与react中的异步
  • 【kafka03】消息队列与微服务之Kafka 读写数据