将属性从一个对象数组添加到另一个对象

时间:2020-11-28 20:15:38

I have the following Angular 1.0 controller:

我有以下Angular 1.0控制器:

function EventListController($timeout, eventService) {
  var vm = this;
  vm.events = getEvents();
  vm.calendar buildCalendar();
}

The variable vm.events is something like:

变量vm.events类似于:

vm.events = [
  { date: "2016-09-22T12:05:42.03", id: 12 }, 
  { date: "2016-09-25T12:05:42.03", id: 14 }
];

The variable calendar is the following:

变量日历如下:

vm.calendar = {
  weeks: [
    { days: [ { date: "2016-09-12T12:05:42.03" }, ... ] }
    { days: [ { date: "2016-09-22T12:05:42.03" }, ... ] }
  ]
}

I need to go through all events dates and add the ID property to the calendar date of the same DAY. Calendar weeks has all days of that month. In this case is September 2016.

我需要浏览所有事件日期并将ID属性添加到同一天的日历日期。日历周有该月的所有日子。在这种情况下是2016年9月。

How can I do this?

我怎样才能做到这一点?

1 个解决方案

#1


1  

You need to iterate both objects. You can use Date constructor to create Date object and the use setHours(0,0,0,0) to set hours, mins.. as zero, then you can only compare date.

您需要迭代这两个对象。您可以使用Date构造函数创建Date对象,并使用setHours(0,0,0,0)将小时,分钟...设置为零,然后您只能比较日期。

var vm = {};
vm.events = [{
  date: "2016-09-22T12:05:42.03",
  id: 12
}, {
  date: "2016-09-25T12:05:42.03",
  id: 14
}];
vm.calendar = {
  weeks: [{
    days: [{
      date: "2016-09-25T09:05:42.03"
    }]
  }]
};

vm.calendar.weeks.forEach(function(w) {
  w.days.forEach(function(d) {
    var e = vm.events.filter(function(e) {
      return new Date(e.date).setHours(0, 0, 0, 0) == new Date(d.date).setHours(0, 0, 0, 0);
    });
    if (e.length) {
      d.id = e[0].id;
    }
    console.log(d)
  })
});

//console.log(vm.calendar.weeks)

#1


1  

You need to iterate both objects. You can use Date constructor to create Date object and the use setHours(0,0,0,0) to set hours, mins.. as zero, then you can only compare date.

您需要迭代这两个对象。您可以使用Date构造函数创建Date对象,并使用setHours(0,0,0,0)将小时,分钟...设置为零,然后您只能比较日期。

var vm = {};
vm.events = [{
  date: "2016-09-22T12:05:42.03",
  id: 12
}, {
  date: "2016-09-25T12:05:42.03",
  id: 14
}];
vm.calendar = {
  weeks: [{
    days: [{
      date: "2016-09-25T09:05:42.03"
    }]
  }]
};

vm.calendar.weeks.forEach(function(w) {
  w.days.forEach(function(d) {
    var e = vm.events.filter(function(e) {
      return new Date(e.date).setHours(0, 0, 0, 0) == new Date(d.date).setHours(0, 0, 0, 0);
    });
    if (e.length) {
      d.id = e[0].id;
    }
    console.log(d)
  })
});

//console.log(vm.calendar.weeks)