arrays - 如何在 TypeScript 中向对象数组添加具有不同值的新属性?

标签 arrays angular typescript

示例:

equipment: object[] = [
       {name: 'Duct Tape', mass: 0.5},
       {name: 'Space Camera', mass: 20},
       {name: 'Food', mass: 150},
       {name: 'Oxygen Tanks', mass: 400},
             ];

我想要的对象是

equipmentItems: object[] = [
       {name: 'Duct Tape', mass: 0.5 , age = 25},
       {name: 'Space Camera', mass: 20 , age = 30},
       {name: 'Food', mass: 150 , age = 35},
       {name: 'Oxygen Tanks', mass: 400 , age = 40}
      ]

我知道我可以循环添加属性,例如

for(let i=0;i<equipments.length;i++){
  let equipments[i].age=25;
}

但这将使所有装备的年龄增加25。有没有快速的方法来做到这一点?

最佳答案

使用计数器来保存年龄值,并在每次迭代中递增它,以及扩展运算符:

let counter = 20;
this.equipment = this.equipment.map(e => {
  return {
    ...e,
    age: counter += 5,
  };
});

此外,由于我们使用 typescript 创建一个接口(interface)来表示设备,即

export interface Items {
  name: string;
  mass: number;
  age?: number;      // optional since it is added later
}

现在使用以下方法定义数组:

equipment: Items[] = [
  { name: 'Duct Tape', mass: 0.5 },
  { name: 'Space Camera', mass: 20 },
  { name: 'Food', mass: 150 },
  { name: 'Oxygen Tanks', mass: 400 },
];

关于arrays - 如何在 TypeScript 中向对象数组添加具有不同值的新属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64798623/

相关文章:

c - 如何将 STDIN 字符串设置为特定字符?

java - 为什么 Libgdx Bullet 中的 ContactListener 派生类中的数组大小始终为零?

java - 如何从字符串数组生成HBase java Put类?

angular - 异步测试确实遍历了所有功能

angular - 如何在 RxJS 的 GroupBy 中使用分组键,

java - 从数组中的特定字段填充

typescript - 如何使用 http 在 angular2 中发出放置请求?

Angular 和 TypeScript - 显示当月的最后一天

node.js - 不允许访问控制允许 header

typescript - 为什么 TS 在一元算术运算中不安全,但在二进制算术运算中不安全?