【问题标题】:Rename (add suffix to) every key except 2 in every object in array of objects javascript重命名(添加后缀)对象数组中每个对象中除 2 之外的每个键
【发布时间】:2021-11-20 05:44:23
【问题描述】:

我们有以下 javascript 数组:

[
  { team: 1, stat1: 17, stat2: 25, var1: 'okay', var3: 'nah', here: 24 },
  { team: 1, stat1: 17, stat2: 25, var1: 'okay', var3: 'nah', here: 24 },
  { team: 1, stat1: 17, stat2: 25, var1: 'okay', var3: 'nah', here: 24 }
]

我们希望将后缀Agst 添加到除team 键之外的每个键,这样我们的输出是:

[
  { team: 1, stat1Agst: 17, stat2Agst: 25, var1Agst: 'okay', var3Agst: 'nah', hereAgst: 24 },
  { team: 1, stat1Agst: 17, stat2Agst: 25, var1Agst: 'okay', var3Agst: 'nah', hereAgst: 24 },
  { team: 1, stat1Agst: 17, stat2Agst: 25, var1Agst: 'okay', var3Agst: 'nah', hereAgst: 24 }
]

我们的实际对象数组中的每个对象都有 >100 个键,因此我们正在寻找一种解决方案,专门更改除 team 之外的所有键名,而不是更改所有名称为 ['stat1', 'stat2', 'var1', 'var3', 'here'] 如果可能的话。

【问题讨论】:

  • 为什么关闭needs more focus?问题的重点很好。
  • 如果问题没有显示您迄今为止尝试过的尝试/代码,人们通常会以这个原因进行 VTC - 所以我猜这可能是原因。
  • 可能是因为您没有添加任何您尝试过的代码 - 您只是希望我们为您编写一些东西,而这不是本网站的本意工作。
  • 很公平,我通常会在之前和之后处理代码。我暂时有一个可行的解决方案,我将发布。
  • 如果你有工作代码,你为什么要问这个问题?

标签: javascript ecmascript-6


【解决方案1】:

您可以使用mapObject.entries 轻松实现结果:

const arr = [
  { team: 1, stat1: 17, stat2: 25, var1: "okay", var3: "nah", here: 24 },
  { team: 1, stat1: 17, stat2: 25, var1: "okay", var3: "nah", here: 24 },
  { team: 1, stat1: 17, stat2: 25, var1: "okay", var3: "nah", here: 24 },
];

const result = arr.map((o) =>
  Object.fromEntries(
    Object.keys(o).map((key) =>
      key === "team" ? [key, o[key]] : [`${key}Agst`, o[key]]
    )
  )
);

console.log(result);
/* This is not a part of answer. It is just to give the output full height. So IGNORE IT */
.as-console-wrapper { max-height: 100% !important; top: 0; }

【讨论】:

    【解决方案2】:

    这对我来说似乎没问题。

    arr = [
      { team: 1, stat1: 17, stat2: 25, var1: 'okay', var3: 'nah', here: 24 },
      { team: 1, stat1: 17, stat2: 25, var1: 'okay', var3: 'nah', here: 24 },
      { team: 1, stat1: 17, stat2: 25, var1: 'okay', var3: 'nah', here: 24 }
    ]
    
    arr.forEach((row, index, theArray) => {
        let rowKeys = Object.keys(row).filter(key => key !== 'team');
        rowKeys.forEach(key => {
            theArray[index][`${key}Agst`] = theArray[index][key];
            delete theArray[index][key];
        });
    });
    
    console.log(arr);

    【讨论】:

      猜你喜欢
      • 2019-04-03
      • 1970-01-01
      • 2020-03-16
      • 2019-02-02
      • 1970-01-01
      • 1970-01-01
      • 2017-06-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多