2016-09-21 1 views
0

にオブジェクトの1つの配列からプロパティを追加I持って次の角1.0コントローラ:

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

変数カレンダーは以下の通りです:

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

変数vm.eventsが何かのようなものです:

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

すべてのイベントの日付を調べ、IDプロパティを同じDのカレンダーの日付に追加する必要がありますAY。カレンダーの週は、その月のすべての日があります。この場合は2016年9月です。

どうすればいいですか?

+1

あなたはオブジェクト – Satpal

+0

しかし、どのように日付のみを比較するのではなく時間の両方を繰り返すことができますか? –

+0

は、 'new Date(" 2016-09-22T12:05:42.03 ")のように比較するsetHours(0,0,0,0)==新しい日付(" 2016-09-22T09:05:42.03 ")。setHours( 0,0,0,0) ' – Satpal

答えて

1

両方のオブジェクトを反復処理する必要があります。 Dateコンストラクタを使用してDateオブジェクトを作成し、setHours(0,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)