javascript - Reactjs/Javascript 更新对象键名

标签 javascript reactjs

我想更新 setState 上的对象 key 名称。我有这个对象:

let obj = {
      sponsorship: {
        a: {
          task: "x",
          todo: "y"
        },
        b: {
          task: "x1",
          todo: "y2"
        }
      }
    };
    setForm(obj);

现在想要重命名对象键名称之一:

setForm({
      ...form,
      sponsorship: {
        ...form.sponsorship,
        [newName]: { ...form.sponsorship[oldName] }
      }
    });

我尝试了这个,但它会添加新对象而不是替换。也尝试过这个:

setForm({
      ...form,
      sponsorship: {
        [newName]: { ...form.sponsorship[oldName] }
      }
    });

但这将删除所有先前的对象。但我需要将 a 键重命名为 c

Demo

最佳答案

如果您不想删除某个属性,并且正在寻找替代方法来执行此操作,则可以过滤 sponsorship 属性并返回一个不带 oldValue< 的新对象

setForm({
  ...form,
  sponsorship: {
    ...Object.fromEntries(
      Object.entries(form.sponsorship)
      .filter(([key]) => oldName !== key)
    ),
    [newName]: { ...form.sponsorship[oldName] }
  }
});

关于javascript - Reactjs/Javascript 更新对象键名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74207951/

相关文章:

css - 在不同页面上 react 大日历 CSS 覆盖

javascript - iOS 11 - 独立的网络应用程序链接打开默认反转? (处理 Web 应用程序中的 PDF 显示。)

javascript - 即使命名约定正确,AngularJS 指令也未应用

javascript - svgPanZoom:仅使用鼠标中键进行平移

ReactJS:根据状态淡入div和淡出div

javascript - d3 v5 轴比例更改平移方式太多

javascript - 按照教程时 react 错误

javascript - 是否有一个 react native 包来检索附近的 iOS 无线 SSID?

javascript - 尝试根据筛选器选择使用字符串值填充数组,并通过将数组与记录属性的字符串值进行比较来筛选记录

reactjs - 通过 React App 的数据表按钮