【问题标题】:Creating a new object with same keys and values [duplicate]创建具有相同键和值的新对象[重复]
【发布时间】:2021-03-02 17:29:38
【问题描述】:

我正在尝试创建一个新对象,并在其中插入来自“旧”对象的某些值,我已经尝试这样做了一段时间,但每次我最终都在同一个位置。

[
{ initials: "HLC", name: "HAPAG", color: "#FF8040" }
​
{ initials: "HMM", name: "HYUNDAI", color: "#C10D11" }
​
{ initials: "MSC", name: "MSC", color: "#F5BA07" }
​
{ initials: "ONE", name: "ONE", color: "#A80F89" }
]

这将是我从 API 获得的对象(它在数组内部),我需要创建一个只有特定值的新对象,如下所示:

const newObj = {
initials: "HLC",
initials: "HMM",
initials: "MSC",
initials: "ONE",
}

不知何故,我总是以newObj = {initials: "ONE"} 结束,我认为这是因为我使用循环来完成它。 我需要对其他两个键做同样的操作,但如果我知道如何用一个键来做,我会很好。

【问题讨论】:

  • 你不能有一个具有相同键的对象,你可以使initials 一个具有值的数组
  • 一个对象不能有重复的键。您正在使用密钥initials 四次。真的不可能像你用js写的那样构造一个对象。
  • 哦,该死的,我不知道,所以最好的用途是我做newObj = [{initials: "HLC"},{...},{...}] ?

标签: javascript reactjs


【解决方案1】:

您可以将destructured 字段作为shorthand property names 映射到新对象。

const original = [
  { initials: "HLC" , name: "HAPAG"   , color: "#FF8040" },
  { initials: "HMM" , name: "HYUNDAI" , color: "#C10D11" },
  { initials: "MSC" , name: "MSC"     , color: "#F5BA07" },
  { initials: "ONE" , name: "ONE"     , color: "#A80F89" }
];

const modified = original.map(({ initials }) => ({ initials }));

console.log(modified);
.as-console-wrapper { top: 0; max-height: 100% !important; }

如果你想要所有的首字母,你可以类似地映射它们:

const original = [
  { initials: "HLC" , name: "HAPAG"   , color: "#FF8040" },
  { initials: "HMM" , name: "HYUNDAI" , color: "#C10D11" },
  { initials: "MSC" , name: "MSC"     , color: "#F5BA07" },
  { initials: "ONE" , name: "ONE"     , color: "#A80F89" }
];

const modified = {
  initials: original.map(({ initials }) => initials)
};

console.log(modified);
.as-console-wrapper { top: 0; max-height: 100% !important; }

【讨论】:

    【解决方案2】:

    创建一个类似的对象

    const newObj = {
      initiales: "HLC",
      initiales: "HMM",
      initiales: "MSC",
      initiales: "ONE",
    }
    

    相当于

    const newObj = {}
    newObj.initiales = "HLC" 
    newObj.initiales = "HMM" 
    newObj.initiales = "MSC" 
    newObj.initiales = "ONE" 
    
    

    最后你得到了:

    const newObj = { initiales: "ONE" }
    

    只有

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-19
      • 1970-01-01
      • 2019-09-29
      • 2020-08-23
      • 1970-01-01
      • 1970-01-01
      • 2021-10-26
      • 1970-01-01
      相关资源
      最近更新 更多