合并两个对象数组,但在某个键/值上具有唯一性
我有两个带有各种键/值的对象的 Javascript 数组。
我正在尝试使用从每个原始数组中选择的键/值来实现一个新的对象数组,但在特定键/值上具有唯一性。
例子:
const startDate = [
{
name: 'John', //Don't need this
Id: 'ae570d88-809b-45b1-bc20-69b569e361ce', //This should be the 'unique' key
datePosted: '2020-04-04T00:01:20.000Z' //This will be the start date
}
]
const endDate = [
{
name: 'James', //Don't need this
Id: 'ae570d88-809b-45b1-bc20-69b569e361ce', //This should be the 'unique' key
datePosted: '2021-04-04T00:01:20.000Z' //This will be the end date
}
]
const desiredOutput = [
{
'ae570d88-809b-45b1-bc20-69b569e361ce': {
startDate: '2020-04-04T00:01:20.000Z',
endDate: '2021-04-04T00:01:20.000Z'
}
}
]
const desiredOutput2 = [
{
Id: 'ae570d88-809b-45b1-bc20-69b569e361ce',
startDate: '2020-04-04T00:01:20.000Z',
endDate: '2021-04-04T00:01:20.000Z'
}
]
我已经尝试使用 JS 扩展运算符,但无法弄清楚将键重命名为 startDate/endDate 并根据“Id”键的唯一性将它们添加到数组中的同一个对象。
两个所需的输出中的任何一个都可以很好地工作
回答
您可以映射在起始日期阵列和发现基础上的结束日期Id
。
const startDate = [
{
name: 'John', //Don't need this
Id: 'ae570d88-809b-45b1-bc20-69b569e361ce', //This should be the 'unique' key
datePosted: '2020-04-04T00:01:20.000Z' //This will be the start date
}
]
const endDate = [
{
name: 'James', //Don't need this
Id: 'ae570d88-809b-45b1-bc20-69b569e361ce', //This should be the 'unique' key
datePosted: '2021-04-04T00:01:20.000Z' //This will be the end date
}
]
const desiredOutput = startDate.map((startObj) => {
const foundEndDate = endDate.find((endObj) => endObj.Id === startObj.Id);
return {
Id: startObj.Id,
startDate: startObj.datePosted,
endDate: foundEndDate.datePosted,
};
});
console.log(desiredOutput);