javascriptの条件を持つネストされたループ

sh2ka

通過した後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要素)の各要素にオブジェクトを追加することです。だからあなたが得るものは:

  1. まずelementday7つのオブジェクトをfull_day(7つの要素)に追加ます
  2. あなたのセコンelementdayさらに7つのオブジェクトをfull_day(14の要素)に追加ます
  3. 3番目にelementday7つのオブジェクトを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]

編集
0

コメントを追加

0

関連記事

分類Dev

javascript-条件付きで変更されたネストされたフィールドを持つマップ

分類Dev

ネストされたforループを持つJavaコードの複雑さ

分類Dev

独立したネストされたループを持つBigO

分類Dev

Java-ネストされたループを持つpaintComponent

分類Dev

handlebars.net内のネストされていない配列を持つネストされたループ

分類Dev

ネストされたif / else条件を持つ1つのライナー

分類Dev

SQLクエリヘルプ-2つのネストされた条件ステートメントを持つ関数

分類Dev

複数のサブ条件を持つネストされたケース

分類Dev

Rでネストされたforループを回避し、複数の条件を持つ複数のdata.frame間で一致させる

分類Dev

2つのネストされたループを持つアルゴリズムの時間計算量

分類Dev

rdflibの値に単位を持つネストされたトリプル->タートルファイル

分類Dev

ローカル変数を持つネストされたループ

分類Dev

線形時間複雑さを持つネストされたループ?

分類Dev

ネストされたオブジェクトを持つ無限ループ

分類Dev

ifステートメントの最後のループを持つ3つのネストされたループのBigOの複雑さ

分類Dev

2つのテーブルを持つネストされたグリッド

分類Dev

ネストされたループを持つC ++プログラムのCommonLispコード

分類Dev

ネストされた関数スコープを持つUnboundLocalError

分類Dev

オプションのパラメータを持つネストされたルート

分類Dev

ネストされたレベルのプログラム番号を持つネストされたifelseステートメント

分類Dev

複数のノードを持つXSLT1.0のネストされたグループ化

分類Dev

ネストされたループを持つ関数の理論上の実行時間の理解

分類Dev

Java8ストリームでマップされた値を持つリストのネストされたグループ化を取得する方法

分類Dev

ネストされたグループ化変数を持つ複数行の軸ラベル

分類Dev

ネストされたループを持つアルゴリズムの時間計算量

分類Dev

特定の値に一致する行を持つパンダのネストされたループ

分類Dev

内部ImmutableListを持つマップのネストされたgroupingBy?

分類Dev

JavaScript:ネストされた配列を持つオブジェクトをReactのテーブルにマップする方法

分類Dev

Androidルーム:ネストされたDAOを持つDAO

Related 関連記事

  1. 1

    javascript-条件付きで変更されたネストされたフィールドを持つマップ

  2. 2

    ネストされたforループを持つJavaコードの複雑さ

  3. 3

    独立したネストされたループを持つBigO

  4. 4

    Java-ネストされたループを持つpaintComponent

  5. 5

    handlebars.net内のネストされていない配列を持つネストされたループ

  6. 6

    ネストされたif / else条件を持つ1つのライナー

  7. 7

    SQLクエリヘルプ-2つのネストされた条件ステートメントを持つ関数

  8. 8

    複数のサブ条件を持つネストされたケース

  9. 9

    Rでネストされたforループを回避し、複数の条件を持つ複数のdata.frame間で一致させる

  10. 10

    2つのネストされたループを持つアルゴリズムの時間計算量

  11. 11

    rdflibの値に単位を持つネストされたトリプル->タートルファイル

  12. 12

    ローカル変数を持つネストされたループ

  13. 13

    線形時間複雑さを持つネストされたループ?

  14. 14

    ネストされたオブジェクトを持つ無限ループ

  15. 15

    ifステートメントの最後のループを持つ3つのネストされたループのBigOの複雑さ

  16. 16

    2つのテーブルを持つネストされたグリッド

  17. 17

    ネストされたループを持つC ++プログラムのCommonLispコード

  18. 18

    ネストされた関数スコープを持つUnboundLocalError

  19. 19

    オプションのパラメータを持つネストされたルート

  20. 20

    ネストされたレベルのプログラム番号を持つネストされたifelseステートメント

  21. 21

    複数のノードを持つXSLT1.0のネストされたグループ化

  22. 22

    ネストされたループを持つ関数の理論上の実行時間の理解

  23. 23

    Java8ストリームでマップされた値を持つリストのネストされたグループ化を取得する方法

  24. 24

    ネストされたグループ化変数を持つ複数行の軸ラベル

  25. 25

    ネストされたループを持つアルゴリズムの時間計算量

  26. 26

    特定の値に一致する行を持つパンダのネストされたループ

  27. 27

    内部ImmutableListを持つマップのネストされたgroupingBy?

  28. 28

    JavaScript:ネストされた配列を持つオブジェクトをReactのテーブルにマップする方法

  29. 29

    Androidルーム:ネストされたDAOを持つDAO

ホットタグ

アーカイブ