以下は、ループ内の配列から月を抽出する関数です。月が見つかると、その月はオブジェクト CRIMES_PER_MONTH で 1 ずつ繰り返されます。
これは機能しますが、非常に醜い解決策であり、switch ステートメントが非常に長くなります。では、switch ステートメントの代わりに何を使用できますか?
var crimes_per_month = {
january: 0,
february: 0,
mars: 0,
april: 0,
may: 0,
june: 0,
july: 0,
august: 0,
september: 0,
oktober: 0,
november: 0,
december: 0
};
function AddToMonths(month) {
switch(month) {
case 1:
jan += 1;
break;
case 2:
feb += 1;
break;
case 3:
mar += 1;
break;
case 4:
apr += 1;
break;
... and so on...
}
}
for(var i = 0; i < incidents.length; i++) {
month = incidents[i].substring(5, 7);
AddToMonths(parseInt(month));
}
ループ内でオブジェクトに直接アクセスするのが最善だと思います。
for(var i = 0; i < incidents.length; i++) {
month = incidents[i].substring(5, 7);
crimes_per_month[month] += 1;
}
...しかし、これは配列に対してのみ機能します。これをオブジェクトとして保持したいのです。