合并两个对象数组,但在某个键/值上具有唯一性

我有两个带有各种键/值的对象的 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);


以上是合并两个对象数组,但在某个键/值上具有唯一性的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>