1

長さ300のseasonsというオブジェクトの配列があり、特定のプロパティ「Date」を検索して、以前に見つからなかった場合は配列に追加しようとしています。これまでのところ、

var day=[];
for (var i=1; i<300; i++) {
    var found=false;
    for (var j=0; j<day.length; j++) {
        if (day[j]==seasons[i]["Date"]) {
            found=true;
            break;
        }
        if (!found) {
            day[day.length]=seasons[i]["Date"];
        }
    }
}

これがどこで間違っているのかよくわかりません。助けていただければ幸いです。ありがとう

4

1 に答える 1

1

break内側の for ループから抜け出すため、if (!found)ブロックは実行されません。

内側のループの後に置くだけです:

for (var i = 1; i < 300; i++) {
    var found = false;
    for (var j = 0; j < day.length; j++) {
        if (day[j] == seasons[i]["Date"]) {
            found = true;
            break;
        }
    }
    if (!found) {
        day[day.length] = seasons[i]["Date"];
    }
}

または、if ブロックで実行します。

for (var i = 1; i < 300; i++) {
    for (var j = 0; j < day.length; j++) {
        if (day[j] == seasons[i]["Date"]) {
            day[day.length] = seasons[i]["Date"];
            break;
        }
    }
}

後者の解決策が理解しやすいと思います。

于 2013-11-09T14:42:19.863 に答える