都道府県別のデータを扱う機会ってありますよね.
私もとあるサービスの都道府県別データを解析しておりました.
$ wc -l location_data/location-*.csv | sort | head
0 location_data/location-8.csv
0 location_data/location-9.csv
12 location_data/location-38.csv
14 location_data/location-36.csv
20 location_data/location-31.csv
26 location_data/location-32.csv
29 location_data/location-16.csv
33 location_data/location-18.csv
48 location_data/location-39.csv
52 location_data/location-35.csv
あれ,8と9がおかしい.いくらなんでもゼロってことはないだろう...
ちなみに8と9というのは茨城県と栃木県の都道府県コード(JIS規格)です.
なにかがおかしいなぁ.
parseInt("08") と parseInt("09") は "0" になる!!!!
いろいろ調べてたらたどり着きました.
javascript parseInt() 08 09 ではまる。
嘘だろと思って,近くにあった mongo shell でたしかめました.
> parseInt("09")
0
> parseInt("08")
0
> parseInt("07")
7
本当でした.
> parseInt("09", 10)
9
> parseInt("08", 10)
8
> parseInt("07", 10)
7
第二引数で10進数だよ〜と指定すればよいそうです.幸いDBには "08", "09" 形式で格納されていたので大事に至らなそうです.
これがDBに格納するときに "0" になっていたらガクブルです.
茨城県と栃木県のデータがおかしいときは,parseInt を思い出しましょう.
そして,テストデータには茨城県と栃木県を含めましょう.