【问题标题】:Assign new name to object's key in an array of objects为对象数组中的对象键分配新名称
【发布时间】:2022-10-13 20:48:47
【问题描述】:

在 Grid 中,记录从 API 获取并显示。它还具有某些输入字段,包括文本和日期字段。在输入日期的数据时,它会显示两次,如控制台中所示,来自 JSON 的数据为est: 10/20/2022 ,但我想将其显示为Establish: 10/20/2022。可以对代码进行哪些修改?请参考下面的代码。

      //Here 'allData' is an array of data from JSON 
      const tempData = allData;

      tempData.map((x) => {
        if (data.id === x.id) {
          x.name = data.textVal;
        }

        // Here I'm trying to assign new key 'Establish' to old key 'est'
        if (data.id === x.id) {
          x["est"] = x["Establish"];
          x.Establish = data.dateVal;
        }
      });

请参考codesandbox链接 --> https://codesandbox.io/s/jovial-aryabhata-95o2sy?file=/src/Table.js

【问题讨论】:

  • 你所拥有的有什么问题?它似乎完全按照您的描述进行。 (不过,您不需要引用的表格,只需 x.est = x.Establish; x.Establish = data.dateVal; 就可以了。)
  • 请添加预期输入/输出的样本

标签: javascript reactjs frontend


【解决方案1】:

试一试

if(data.id === x.id) {
   delete Object.assign(x, {['Establish']: x['est'] })['est'];
}

【讨论】:

    【解决方案2】:

    我认为您的方式可行,但是如果您想要另一种方式,则可以使用以下方法创建新属性:

    Object.defineProperty(x, "Establish", Object.getOwnPropertyDescriptor(x, "est"));
    

    【讨论】:

    • 之后,您可以根据需要删除旧的!
    猜你喜欢
    • 2019-12-06
    • 2021-09-28
    • 2021-11-07
    • 2021-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-06
    相关资源
    最近更新 更多