を通過した後full_day[]
、配列と正確に同じ長さになるように名前が付けられた配列を作成したいプロジェクトに取り組んでtime_plan[]
いday_schedule()
ます。
これが私のコードです:
function day_schedule(){
var time_plan = [{"lesson_start":"08:00","lesson_end":"09:00"},{"lesson_start":"09:00","lesson_end":"10:00"},{"lesson_start":"10:00","lesson_end":"11:00"},{"lesson_start":"11:00","lesson_end":"12:00"},{"lesson_start":"12:00","lesson_end":"13:00"},{"lesson_start":"13:00","lesson_end":"13:30"},{"lesson_start":"13:30","lesson_end":"14:30"}];
var day = [{"subject_name":"Math-1","lesson_start":"08:00","lesson_end":"09:00"},{"subject_name":"Phy","lesson_start":"11:00","lesson_end":"12:00"},{"subject_name":"Engl","lesson_start":"12:00","lesson_end":"13:00"}];
var key1 = 'lesson_start';
var key2 = 'lesson_end';
var full_day = [];
for (var d = 0; d < day.length; d++) {
var start_time = day[d].lesson_start;
var end_time = day[d].lesson_end;
for (var i = 0; i < time_plan.length; i++) {
var search_key = time_plan[i][key1] == start_time && time_plan[i][key2] == end_time;
if (search_key == true) {
document.writeln('day matched == ' + day[d],'<br>');
full_day.push(day[d]);
} else {
full_day.push({
lesson_start: ' ',
lesson_end: ' ',
subject_name: ' '
});
}
}
console.log('full day',full_day.length, full_day);
}
}
day_schedule();
私はの結果を期待しています
full day 7 [
{
"subject_name": "Math-1",
"lesson_start": "08:00",
"lesson_end": "09:00"
},
{
"lesson_start": " ",
"lesson_end": " ",
"subject_name": " "
},
{
"lesson_start": " ",
"lesson_end": " ",
"subject_name": " "
},
{
"subject_name": "Phy",
"lesson_start": "11:00",
"lesson_end": "12:00"
},
{
"subject_name": "Engl",
"lesson_start": "12:00",
"lesson_end": "13:00"
},
{
"lesson_start": " ",
"lesson_end": " ",
"subject_name": " "
},
{
"lesson_start": " ",
"lesson_end": " ",
"subject_name": " "
}
];
しかし、私はそれを行う方法を理解することはできません。
full_day
サイズを一致させたい場合は、反復がすべて間違っていますtime_plan
。コードで行っているのは、day
(3要素)の各要素を反復し、これらの要素のfull_day
それぞれについて、time_plan
(7要素)の各要素にオブジェクトを追加することです。だからあなたが得るものは:
element
、day
7つのオブジェクトをfull_day
(7つの要素)に追加しますelement
はday
さらに7つのオブジェクトをfull_day
(14の要素)に追加しますelement
、day
7つのオブジェクトをfull_day
(21の要素)に再度追加します使用したロジックを維持したい場合は、次のようにループを逆にすることをお勧めします。
function day_schedule(){
var time_plan = [{"lesson_start":"08:00","lesson_end":"09:00"},
{"lesson_start":"09:00","lesson_end":"10:00"},
{"lesson_start":"10:00","lesson_end":"11:00"},
{"lesson_start":"11:00","lesson_end":"12:00"},
{"lesson_start":"12:00","lesson_end":"13:00"},
{"lesson_start":"13:00","lesson_end":"13:30"},
{"lesson_start":"13:30","lesson_end":"14:30"}];
var day =[{
"subject_name":"Math1",
"lesson_start":"08:00",
"lesson_end":"09:00"
},
{
"subject_name":"Phy",
"lesson_start":"11:00",
"lesson_end":"12:00"
},
{
"subject_name":"Engl",
"lesson_start":"12:00",
"lesson_end":"13:00"
}];
var key1 = 'lesson_start';
var key2 = 'lesson_end';
var full_day = [];
for (var tp = 0; tp < time_plan.length; tp++) {
var start_time = time_plan[tp].lesson_start;
var end_time = time_plan[tp].lesson_end;
var lesson = {
lesson_start: ' ',
lesson_end: ' ',
subject_name: ' '
};
for (var i = 0; i < day.length; i++) {
var search_key = day[i][key1] == start_time && day[i][key2] == end_time;
if (search_key == true) {
lesson = day[i]
}
}
full_day.push(lesson)
}
console.log('full day',full_day.length, full_day);
}
day_schedule();
ご覧のとおり、これにより目的の出力が得られます。これで、コードを少し修正してきれいにし、次のArray
ような便利なJavaScript関数を使用することもできます。find()
function day_schedule(){
var time_plan = [{"lesson_start":"08:00","lesson_end":"09:00"},
{"lesson_start":"09:00","lesson_end":"10:00"},
{"lesson_start":"10:00","lesson_end":"11:00"},
{"lesson_start":"11:00","lesson_end":"12:00"},
{"lesson_start":"12:00","lesson_end":"13:00"},
{"lesson_start":"13:00","lesson_end":"13:30"},
{"lesson_start":"13:30","lesson_end":"14:30"}
];
var day =[{
"subject_name":"Math1",
"lesson_start":"08:00",
"lesson_end":"09:00"
},
{
"subject_name":"Phy",
"lesson_start":"11:00",
"lesson_end":"12:00"
},
{
"subject_name":"Engl",
"lesson_start":"12:00",
"lesson_end":"13:00"
}];
var full_day = [];
// Use foreach instead of regular for when you iterate arrays
for (tp in time_plan) {
var plan = time_plan[tp]
var start_time = plan.lesson_start;
var end_time = plan.lesson_end;
// Use this function to find a suitable lesson given start and end times
var lesson = day.find(function(d) {
var start_matches = d.lesson_start == start_time;
var end_matches = d.lesson_end == end_time;
var matches = start_matches && end_matches;
return start_matches && end_matches;
}) || { // ... or assing a default empty value
lesson_start: ' ',
lesson_end: ' ',
subject_name: ' '
};
full_day.push(lesson)
}
console.log('full day',full_day.length, full_day);
}
day_schedule();
お役に立てれば。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加