typescript/js比较添加新键值的对象数组



我的目标是比较两个对象,如果对象1和对象2之间匹配,如果它们具有相同的id,则向对象1插入新的键值,对于每个匹配的对象,该键值为Confirmed=true;

你们知道吗?我在下面提供了我的当前代码。谢谢

#对象-原始数据

const object1 = [
{
"id": 10691,
"city": "Morris",
},
{
"id": 10692,
"city": "NY",
]
const object2 = [
{
"id": 10691,
"city": "Morris",
{
"id": 10500,
"city": "JY",
}
]

#ts代码

let result = object1.filter(o1 => object2.some(o2 => o1.id === o2.id));

#预期样本结果

object1 = [
{
"id": 10691,
"city": "Morris",
"isConfirmed": true,
},
{
"id": 10692,
"city": "NY",
}
]

使用Setmap可以很容易地获得以下结果:

const object1 = [
{
id: 10691,
city: 'Morris',
},
{
id: 10692,
city: 'NY',
},
];
const object2 = [
{
id: 10691,
city: 'Morris',
},
{
id: 10500,
city: 'JY',
},
];
const map = new Set(object2.map((o) => o.id));
const result = object1.map((o) =>
map.has(o.id) ? { ...o, isConfirmed: true } : { ...o },
);
console.log(result);

您可以使用片段

let result = object1.map(o1 =>
object2.some(o2 => o1.id === o2.id)
? {...o1, isConfirmed: true}
: {...o1}
);

检查object2数组是否具有来自object1的任何id的对象。如果是,则添加isConfirmed: true

const object1 = [
{
id: 10691,
city: 'Morris',
},
{
id: 10692,
city: 'NY',
},
];
const object2 = [
{
id: 10691,
city: 'Morris',
},
{
id: 10500,
city: 'JY',
},
];
let result = object1.map(o1 => object2.some(o2 => o1.id === o2.id) ? {...o1, isConfirmed: true} : {...o1});
console.log(result);

最新更新