1

json オブジェクトの「パス」を変数に保存する方法はありますか? つまり、次のようなものがあるとします。

var obj = {"Mattress": {
                    "productDelivered": "Arranged by Retailer",
                    "productAge": {
                                "year": "0",
                                "month": "6"
                                }
                    }
       };

各キーノード名をループして変数に保存するにはどうすればよいですか? 例えば。(この形式で必要です): マットレス[製品納入]、マットレス[製品年齢][年]、マットレス[製品年齢][月]

私はこのフィドルhttp://jsfiddle.net/4cEwf/で部分的にそこにいますが、ログでわかるように、年と月は分離されず、配列にも追加されます。これは私が行っているループが原因であることはわかっていますが、必要なデータ形式を取得するためにどのように進行するかについて行き詰まっています。フィドルで設定したフローは、必要なものをエミュレートしています。

これを行うことを考えていない方法はありますか?

4

2 に答える 2

2

試す

var obj = {
    "Mattress": {
        "productDelivered": "Arranged by Retailer",
        "productAge": {
            "year": "0",
            "month": "6"
        }
    }
};

var array = [];

function process(obj, array, current){
    var ikey, value;
    for(key in obj){
        if(obj.hasOwnProperty(key)){
            value = obj[key];
            ikey = current ? current + '[' + key + ']' : key;
            if(typeof value == 'object'){
                process(value, array, ikey)
            } else {
                array.push(ikey)
            }
        }
    }
}
process(obj, array, '');
console.log(array)

デモ:フィドル

于 2013-07-24T06:16:02.217 に答える