【问题标题】:How we can replace the keys of an Object with new key? [closed]我们如何用新键替换对象的键? [关闭]
【发布时间】:2022-01-19 16:11:11
【问题描述】:

我有一个像下面这样的对象

[
  {
   "day"  : "monday",
   "value": 1
   },
  {
   "day"  : "tuesday",
   "value": 2
   },
   ...
]

是否有任何本机 javascript 方法可以用新密钥替换密钥。这里我需要分别用“x”和“y”替换“day”和“value”。 (如下所示)

[
  {
   "x"  : "monday",
   "y": 1
   },
  {
   "x"  : "tuesday",
   "y": 2
   },
   ...
]

【问题讨论】:

  • 这能回答你的问题吗? JavaScript: Object Rename Key
  • 一种基本方法是使用Object.entries,然后映射所有属性,然后执行Object.fromEntries 以获取new 对象。那是可用的还是必须是同一个对象? (因为如果绝对必要,删除旧对象的所有属性并添加所有新属性是可行的,但我怀疑可能没有必要。)
  • 您正在尝试map an array onto another array。最简单的方法arr.map(o => ({x: o.day, y: o.value}))
  • 使用solution from this answer,这可以是通用的。 const propMap = {day: 'x', value: 'y'}; const output = arr.map(o => renameKeys(o, propMap))
  • @ManuJ 很清楚,但您还没有尝试过。我们无法判断您在哪个部分遇到困难。没有尝试的问题总是会被关闭,因为答案只会为您完成工作,而不是回答对其他人有帮助的真正编程问题,这是 SO 的重点,它不仅仅是一次帮助一个人。见stackoverflow.com/help/how-to-ask。此外,search for rename object keys javascript 至少可以帮助您入门

标签: javascript arrays object


【解决方案1】:

您可以使用 map 并在回调中创建一个新对象并根据需要对其进行修改。然后返回这个对象

const data = [{
    "day": "monday",
    "value": 1
  },
  {
    "day": "tuesday",
    "value": 2
  }
];

const newData = data.map((item) => {
  const obj = {};
  for (let keys in item) {
    if (keys === 'day') {
      obj['x'] = item[keys]
    }
    if (keys === 'value') {
      obj['y'] = item[keys]
    }


  };
  return obj
});
console.log(newData)

【讨论】:

  • 让我觉得keys 是复数形式。另外我会创建一个地图m = {day:"x", value: "y"},然后做obj[m[key]] = item[key]
  • 我也有问题,可能会简单得多,请参阅我的 cmets。
猜你喜欢
  • 2021-12-11
  • 1970-01-01
  • 2013-04-27
  • 1970-01-01
  • 1970-01-01
  • 2013-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多