茨城県と栃木県のデータがおかしいときに確かめること

  • 87
    いいね
  • 12
    コメント
この記事は最終更新日から1年以上が経過しています。

都道府県別のデータを扱う機会ってありますよね.
私もとあるサービスの都道府県別データを解析しておりました.

 $ 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規格)です.

http://www.kenchikushikai.or.jp/touroku/documents/code-todoufuken.pdf

なにかがおかしいなぁ.

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 を思い出しましょう.
そして,テストデータには茨城県と栃木県を含めましょう.