他にも質問があり、フィルター機能を試しましたが、正しく使っているかわかりません。
基本的に、次のようなオブジェクトの配列があります。
[{"hour":"6 am", "date":"2012-12-01"},{"hour":"7 am", "date":"2012-12-01"}]
私は設定された日数をループしており、毎日午前6時から午後9時までの時間をループしています。時間(その特定の日付の時間のように)が上記の配列に存在する場合。新しいオブジェクトで使用可能としてマークし、それを新しい配列に渡します。以下は私が現在使用しているコードです。
for(var i = 0; i < dayCount; i++){//Loop through the days that exist in the schedule
day = new Object();
day.date = Date.parse(startDate).add(i).days();
day.dayName = weekday[day.date.getDay()]
day.hours = new Array();
for(var j = 6; j < 22; j++){ //Loop through hours of the day seeing if they're available/scheduled, etc.
if(j<=12){
thisHour = j +' am';
} else{
thisHour = j-12 + ' pm';
}
var thisIsAvailable = $(assignedHours).filter(function(){
return assignedHours.hour == thisHour && assignedHours.date == day.date.toString("yyyy-MM-dd");
});
var thisIsScheduled = 0;
day.hours.push({hour: thisHour,available: thisIsAvailable, scheduled: thisIsScheduled});
}
daysInSchedule.push(day);
}
いくつかのメモ。day.dateプロパティで.toString()を使用します。これは、JS日付形式でフォーマットされており、比較する値がMYSQL日付形式であるためです。thisIsAvailable.lengthに警告(古い学校のデバッグについて話します)しましたが、毎回0になります。どんなアイデアでも大歓迎です。ありがとう!
編集:私はあなたに非常に重要なことをすべて伝えるのを忘れていることに気づきました。私が提供する配列は、assignedHoursという名前の変数に含まれています。それを省いてすみません。
編集2:明確にするために、私の質問は2つのコードの抜粋の間のビットにあります。指定された配列内のオブジェクトの1つが、ループ内の曜日と時間、および実行中のネストされたループと一致するかどうかを確認しようとしています。もしそうなら、それを新しいオブジェクトに渡したいのですが、それをその日の時間配列にプッシュします。そうでない場合でも、オブジェクトを渡しますが、使用可能な値は0です。