如何从TypeScript中的JSON对象数组中删除多个项

如何从TypeScript中的JSON对象数组中删除多个项,json,typescript,javascript-objects,Json,Typescript,Javascript Objects,我有一个JSON对象,我想从中删除一系列项: const addressNonRequired = ["addr_linkid_usr", "addr_created", "addr_updated"] 我知道我可以使用“delete”方法,但如何使用上面的数组执行相同的操作: // remove non-required data addressesFound.forEach(row => ( // delete row.

我有一个JSON对象,我想从中删除一系列项:

const addressNonRequired = ["addr_linkid_usr", "addr_created", "addr_updated"]
我知道我可以使用“delete”方法,但如何使用上面的数组执行相同的操作:

// remove non-required data
addressesFound.forEach(row => (
  // delete row.addr_linkid_usr,
  // delete row.addr_created,
  // delete row.addr_updated
  addressNonRequired.forEach(item => (
    delete row[item];
  ));
));
我已经尝试了几种方法来让它工作,不确定我是否以正确的方式看待它

提供的阵列示例:

[
  {
    "addr_id": "41d86d46-8b19-4f4e-be03-f9915ef4947b",
    "addr_type": "postal",
    "addr_linkid_usr": "user1",
    "addr_created": "2021-03-10",
    "addr_updated": "",
    "addr_active": true,
    "addr_postal_as_residential": false,
    "addr_international": false,
    "addr_autocomplete_id": null
  },
  {
    "addr_id": "b18c2ca6-29cf-4114-9067-b37fd3394638",
    "addr_type": "residential",
    "addr_linkid_usr": "user1",
    "addr_created": "2021-03-10",
    "addr_updated": "",
    "addr_active": true,
    "addr_postal_as_residential": true,
    "addr_international": true,
    "addr_autocomplete_id": "string"
  }
]
预期产出:

[
  {
    "addr_id": "41d86d46-8b19-4f4e-be03-f9915ef4947b",
    "addr_type": "postal",
    "addr_active": true,
    "addr_postal_as_residential": false,
    "addr_international": false,
    "addr_autocomplete_id": null
  },
  {
    "addr_id": "b18c2ca6-29cf-4114-9067-b37fd3394638",
    "addr_type": "residential",
    "addr_active": true,
    "addr_postal_as_residential": true,
    "addr_international": true,
    "addr_autocomplete_id": "string"
  }
]

您必须遍历
addressesFound
数组,在每个对象中遍历该对象的键,比较该键是否存在于
addressNonRequired
数组中,并将其删除(如果适用)

var addressesFound=[{
“地址id”:“41d86d46-8b19-4f4e-be03-f9915ef4947b”,
“地址类型”:“邮政”,
“addr\u linkid\u usr”:“user1”,
“地址已创建”:“2021-03-10”,
“地址更新”:“,
“addr_active”:正确,
“地址邮政地址”为“住宅地址”:错误,
“addr_international”:错误,
“地址自动完成id”:空
},
{
“地址id”:“b18c2ca6-29cf-4114-9067-b37fd3394638”,
“地址类型”:“住宅”,
“addr\u linkid\u usr”:“user1”,
“地址已创建”:“2021-03-10”,
“地址更新”:“,
“addr_active”:正确,
“地址:邮政地址:住宅地址”:正确,
“addr_international”:没错,
“地址自动完成id”:“字符串”
}
];
const address nonrequired=[“addr\u linkid\u usr”、“addr\u已创建”、“addr\u已更新”];
var updateAddresses=addressesFound.map(函数(地址){
Object.keys(address).forEach(function(key){//对于每个地址对象,迭代键
如果(地址不需要,包括(键)){
删除地址[键];//检查该键是否存在于AddressUnrequired数组中。如果存在,则删除
}
});
回信地址;
});

console.log(更新的地址)我经常在过滤对象或对象数组时使用此选项

我通常在我的
helpers.ts
文件中有这些。它们还确保要筛选的关键帧确实存在于对象中,并且对象还具有自动完成功能

导出函数除外(数据:T,键:数组){
const copy={…data};
for(键的常数键){
如果(输入副本){
删除副本[密钥];
}
}
返回副本;
}
导出函数exceptMany(数据:数组,键:数组){
返回[…数据].map((项)=>除了(项,键));
}
然后,要过滤对象数组,我们需要执行以下操作:

const数据=[
{
“地址id”:“41d86d46-8b19-4f4e-be03-f9915ef4947b”,
“地址类型”:“邮政”,
“addr\u linkid\u usr”:“user1”,
“地址已创建”:“2021-03-10”,
“地址更新”:“,
“addr_active”:正确,
“地址邮政地址”为“住宅地址”:错误,
“addr_international”:错误,
“地址自动完成id”:空
},
{
“地址id”:“b18c2ca6-29cf-4114-9067-b37fd3394638”,
“地址类型”:“住宅”,
“addr\u linkid\u usr”:“user1”,
“地址已创建”:“2021-03-10”,
“地址更新”:“,
“addr_active”:正确,
“地址:邮政地址:住宅地址”:正确,
“addr_international”:没错,
“地址自动完成id”:“字符串”
}
];
const results=exceptMany(数据,['addr\u linkid\u usr','addr\u created','addr\u updated']);
也可以仅从一个对象筛选关键帧:

const single={
“地址id”:“41d86d46-8b19-4f4e-be03-f9915ef4947b”,
“地址类型”:“邮政”,
“addr\u linkid\u usr”:“user1”,
“地址已创建”:“2021-03-10”,
“地址更新”:“,
“addr_active”:正确,
“地址邮政地址”为“住宅地址”:错误,
“addr_international”:错误,
“地址自动完成id”:空
};
const filteredSingle=except(单个,['addr\u linkid\u usr','addr\u created','addr\u updated']);

添加了示例
addressesFound
您的示例失败,原因是:
类型为“Address”的参数不能分配给类型为“string”的参数。