js中修改数组对象中对象的键名

- 日理万妓 2022-08-28 11:51 346阅读 0赞

场景分析:一个数据字典列表,如下

  1. let dictList = [
  2. { id: 1, name: "sn", desc: "序列号"},
  3. { id: 2, name: "prop", desc: "属性"},
  4. { id: 3, name: "type", desc: "类型"},
  5. { id: 4, name: "user", desc: "负责人"}
  6. ]

后台返回的数据列表,如

  1. let data = [
  2. { sn: 121, user: "张氏"},
  3. { sn: 122, prop: "属性1", type: "类型1"},
  4. { prop: "属性1", type: "类型1", user: "李四"},
  5. ]

需求:后台返回的数据列表想用表格展示,这个数据列表中每个对象返回的键值对是不固定的,但是取值是从数据字典中取来的。为了方便展示,想把后台返回的数据列表中对象的键改为数据字典中对应 namedesc 字段,就动态修改对象的键名。
做法:
我们可以先将数据字典列表转换为一个对象 labels

  1. let labels = { }
  2. dictList.forEach(item => {
  3. this.$set(labels, item.name, item.desc)
  4. })
  5. console.log(labels)
  6. // {
  7. 'sn': '序列号',
  8. 'prop': '属性',
  9. 'type': '类型',
  10. 'user': '负责人'
  11. }

然后修改后台数据列表的对象键名

  1. let res = data.map(item => {
  2. let obj = { }
  3. Object.entries(item).forEach(([k, v]) => {
  4. obj[labels[k] || k] = v
  5. })
  6. return obj
  7. })
  8. console.log(res )

这种做法适合用于返回的数组对象中,对象的属性不固定的情况

发表评论

表情:
评论列表 (有 0 条评论,346人围观)

还没有评论,来说两句吧...

相关阅读