数値文字列を数値にする

アフィリエイト広告を利用しています

このページの内容が役に立ったら X (旧twitter) でフォローして頂けると励みになります
挨拶や報告は無しで大丈夫です

PHPの json_encode() で出力されたデータを受け取ったときに、数値も文字列型で渡されてくるので、数値は数値型に変換します。
ちなみに JSON_NUMERIC_CHECK は意図しないところまで数値にされてしまうので扱いづらいです。

console.log(json);

// 数値文字列を数値にする
// まだ使い込んでいないので変更するかもです
// 頭が 0 から始まる整数は変換しません
// カンマ区切りは変換しません
(function(){
    'use strict';
    var f = function(a){

        // 配列でない
        if ('array' !== Object.prototype.toString.call(a).slice(8, -1).toLowerCase()) {

            // オブジェクトでない
            if ('object' !== Object.prototype.toString.call(a).slice(8, -1).toLowerCase()) {
                return a;
            }
        }

        for(var i in a) {

            // 文字列の時
            if ('string' == Object.prototype.toString.call(a[i]).slice(8, -1).toLowerCase()) {
                if (a[i] === '0') {
                    a[i] = 0;
                } else if (a[i].match(/^[1-9][0-9]*?$/)) {
                    a[i] = parseInt(a[i], 10);
                } else if (a[i].match(/^([1-9][0-9]*|0)\.[0-9]+$/)) {
                    a[i] = parseFloat(a[i], 10);
                }
            } else {
                a[i] = f(a[i]);
            }
        }

        return a;
    };
    json = f(json);
})();

console.log(json);

早い段階で変換しておくと、今の型ってどっちだったっけ?
ってなるのを防止できます。

開発・技術入サポート

ということで宣伝です。

弊社ではライブラリなどを使わない生のJavascriptを扱うこともできますので、お気軽にお問い合わせください。
Javascript は2005年頃から触り続けてきていることもあり得意中の得意です。

特にプログラム開発が必要になるようなカスタマイズは遠慮なくご相談ください。

メールやSNSなどのメッセージで簡単に連絡いただいたあとで、電話していただけると確実です。
※電話にはスカイプ・Google Meet・Zoomなども含みます。

デザイナーさんや営業・ディレクションをされてる方は特に歓迎です。