【问题标题】:How to change all the property names of a json object如何更改 json 对象的所有属性名称
【发布时间】:2020-07-06 13:36:19
【问题描述】:

我想更改一个 json 对象的所有属性名称

const obj = {
  "country": "Value1",
  "area": "value2",
  "color_flag": "value3"
}

const newKeys = ["pays", "Superficie", "Couleur de drapeau"]

// I would like to have something like this : 

obj = {
  "pays": "Value1",
  "superficie": "Value2",
  "couleur_drapeau": "Value3"
}

提前致谢

【问题讨论】:

  • 您如何将哪个旧键映射到哪个新键?对象没有排序。
  • 那将是一个不同的属性。分配obj.pays = obj.country; delete obj.country; 后,如果这些是原始值。
  • 你已经尝试了什么?

标签: javascript json replace


【解决方案1】:

您可以使用新键克隆对象,但您需要为新键提供映射,如下所示:

const newKeys = {
  "country": "pays",
  "area": "superficie",
  "color_flag": "couleur_drapeau"
}

只需在左边放原始键,在右边放新键,在你的情况下是法语的翻译。

然后您需要遍历原始对象的所有键,并使用新键将每个值复制到新对象

const renamedObj = {}
for(let key in obj){
  const newKey = newKeys[key]
  renamedObj[newKey] = obj[key]
}

最终代码应该是这样的:

const obj = {
  "country": "Value1",
  "area": "value2",
  "color_flag": "value3"
}

const newKeys = { // Keys map
  "country": "pays",
  "area": "superficie",
  "color_flag": "couleur_drapeau"
}

const renamedObj = {}
for(let key in obj){
  const newKey = newKeys[key]
  renamedObj[newKey] = obj[key]
}

renamedObj 应如下所示:

renamedObj = {
  "pays": "Value1",
  "superficie": "Value2",
  "couleur_drapeau": "Value3"
}

【讨论】:

  • 如果newKeys 可以包含obj 的键子集,请改用renamedObj[newKey || key] = obj[key]。如果找不到新密钥的真实值,则使用旧密钥。否则一个很好的答案。
猜你喜欢
  • 1970-01-01
  • 2023-03-08
  • 2013-04-18
  • 2020-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-30
相关资源
最近更新 更多