首页 > 解决方案 > 比较两个物体的角度

问题描述

我有一个像这样的对象

workingHours = [{
  endTime: 11:30,
  fixed: true,
  period: 'AM',
  startTime: 10:30,
  weekday: 'MONDAY'
},
{
  endTime: 10:30,
  fixed: true,
  period: 'AM',
  startTime: 08:20,
  weekday: 'FRIDAY'
}
}];

另一个看起来像这样的对象

workingHoursWeek = [{
  endTime: null,
  fixed: false;
  period: 'AM';
  startTime: null;
  weekday: 'MONDAY',
  checked: false
},
{
  endTime: null,
  fixed: false;
  period: 'AM';
  startTime: null;
  weekday: 'TUESDAY',
  checked: false
},
{
  endTime: null,
  fixed: false;
  period: 'AM';
  startTime: null;
  weekday: 'WEDNESDAY',
  checked: false
},
{
  endTime: null,
  fixed: false;
  period: 'AM';
  startTime: null;
  weekday: 'THURSDAY',
  checked: false
},
{
  endTime: null,
  fixed: false;
  period: 'AM';
  startTime: null;
  weekday: 'FRIDAY',
  checked: false
},
{
  endTime: null,
  fixed: false;
  period: 'AM';
  startTime: null;
  weekday: 'SATURDAY',
  checked: false
},
{
  endTime: null,
  fixed: false;
  period: 'AM';
  startTime: null;
  weekday: 'SUNDAY',
  checked: false
}];

我需要的是比较这两个对象并更新workingHoursWeek以获取workingHours的所有值

最后workingHoursWeek应该是这样的

workingHoursWeek = [{
  endTime: 11:30,
  fixed: true,
  period: 'AM',
  startTime: 10:30,
  weekday: 'MONDAY',
  checked: true
},
{
  endTime: null,
  fixed: false;
  period: 'AM';
  startTime: null;
  weekday: 'TUESDAY',
  checked: false
},
{
  endTime: null,
  fixed: false;
  period: 'AM';
  startTime: null;
  weekday: 'WEDNESDAY',
  checked: false
},
{
  endTime: null,
  fixed: false;
  period: 'AM';
  startTime: null;
  weekday: 'THURSDAY',
  checked: false
},
{
   endTime: 10:30,
  fixed: true,
  period: 'AM',
  startTime: 08:20,
  weekday: 'FRIDAY',
  checked: true
},
{
  endTime: null,
  fixed: false;
  period: 'AM';
  startTime: null;
  weekday: 'SATURDAY',
  checked: false
},
{
  endTime: null,
  fixed: false;
  period: 'AM';
  startTime: null;
  weekday: 'SUNDAY',
  checked: false
}];

有没有简单的方法将对象属性重新映射到新对象?谢谢

标签: angulartypescript

解决方案


非常简单,使用 forEach() 循环:

this.workingHoursWeek.forEach(day => {
  this.workingHours.forEach(newDay => {
    if (day.weekday === newDay.weekday) {
      day.endTime = newDay.endTime;
      // etc, update other times and check value to true
    }
  });
});

推荐阅读