JSONデータを読み込んで配列に入れて、それを使おうとしたときに数値として利用できなかったので、その原因と使える状態にした時のメモ。
Chart.json
{"東京":"13159388","大阪":"8865245","神奈川":"9048331","愛知":"7410719","福岡":"5071968","北海道":"5506419","埼玉":"7194556"}
下のコードは、上のJSONデータを読み込んで配列に代入していくプログラムです。実行するとコンソールには、isNaNで非数値であればtrueと表示されるようになっています。数値(v)の値は、falseと表示されます。
var jsonData = [];
$.getJSON('http://localhost/chart.json')
.done(function(data) {
$.each(data, function(k, v) {
console.log(k + ':' + isNaN(k) + ',' + v + ':' + isNaN(v));
/*
if(!isNaN(v)) {
var v = parseInt(v);
}
*/
jsonData.push([k,v]);
});
console.dir(jsonData);
})
.fail(function(data) {
console.log('error');
});
}
<input type="button" onclick="jsonToArray()" />
この段階であれば、数値が代入されて全く問題ないと思ってしまうのですが、console.dir(jsonData)で配列を確認すると数値をダブルクォーテーションで囲って表示されています。これが原因で数値を利用できなかったようです。

そこで、parseInt(v)を使い数値にしてから配列に代入して、console.dir(jsonData)を表示してみるとダブルクォーテーションが無くなっています。この結果、配列に代入した値を数値として利用できるようになりました。

スポンサーリンク


コメント