Javascript 如何根据Id在对象中插入密钥

Javascript 如何根据Id在对象中插入密钥,javascript,angular,typescript,Javascript,Angular,Typescript,我有一个对象数组,当Id匹配时,我想在数组的specifi对象中添加键。我试过这个: this.data.forEach(value => { if (value.Id === attachmentDataId) { AttachmentTypeId: this.attachmentRecord.AttachmentType; } }); 但它不起作用,也没有出现任何错误。请尝

我有一个对象数组,当Id匹配时,我想在数组的specifi对象中添加键。我试过这个:

this.data.forEach(value => {
              if (value.Id === attachmentDataId) {
                AttachmentTypeId: this.attachmentRecord.AttachmentType;
              }
            });
但它不起作用,也没有出现任何错误。请尝试以下操作:

 let data = [{ id: 1 }, { id: 5 }];

  const attachmentDataId = 5;

  const attachmentRecord = { AttachmentType: "AttachmentType" };

  data.forEach(value => {
    if (value.id === attachmentDataId) {
      value.AttachmentTypeId = attachmentRecord.AttachmentType;
    }
  });

stackblitz示例:

您可以使用
forEach
函数的
index
参数访问数组的特定对象

this.data.forEach((值,i)=>{
if(value.Id==attachmentDataId){
此.data[i]={
…此.数据[i],
AttachmentTypeId:this.attachmentRecord.AttachmentType
};
}
});
if
块中,也可以执行以下操作

this.data[i]['AttachmentTypeId']=this.attachmentRecord.AttachmentType;
我只是找到了使用spread操作符清理器的方法。

使用javascript map()方法。 Map()返回一个新数组,它接受回调,迭代该数组中的每个元素

const updatedData = data.map(res => {
   if(res.id === attachmentDataId) {
   res.AttachmentTypeId = attachmentRecord.AttachmentType;
    }
   return res
 })

尝试将if块的主体更改为
value.AttachmentTypeId=this.attachmentRecord.AttachmentType能否提供更多详细信息/上下文?尝试创建一个什么是
此。数据
attachmentDataId
的值是多少?