Javascript 通过递归将嵌套json对象路径保存到变量

Javascript 通过递归将嵌套json对象路径保存到变量,javascript,jquery,json,recursion,Javascript,Jquery,Json,Recursion,有没有办法将json对象的“路径”保存到变量中?也就是说,如果我有这样的东西: var obj = {"Mattress": { "productDelivered": "Arranged by Retailer", "productAge": { "year": "0", "month":

有没有办法将json对象的“路径”保存到变量中?也就是说,如果我有这样的东西:

var obj = {"Mattress": {
                    "productDelivered": "Arranged by Retailer",
                    "productAge": {
                                "year": "0",
                                "month": "6"
                                }
                    }
       };
如何循环并将每个关键节点名称保存到变量?(我需要这种格式):床垫[产品交付]、床垫[产品年龄][年]、床垫[产品年龄][月]

我在这把小提琴中得到了一部分,但正如你在日志中看到的,年和月并没有分开,而是附加到数组中。我知道这是因为我一直在进行循环,但我被困在如何获得我所需的数据格式上。我在小提琴中设置的流程正在模仿我所需要的

有什么方法我没有考虑过吗?

试试看

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)

演示:

哇!这正是我想要的:D非常感谢你:)
var obj = {"Mattress": {
                    "productDelivered": "Arranged by Retailer",
                    "productAge": {
                                "year": "0",
                                "month": "6"
                                }
                    }
       };
var Mattress = new Array();
for(var i in obj.Mattress){
    if(typeof(obj.Mattress[i])==='object'){
        for(var j in obj.Mattress[i]){
            if(Mattress[i]!=undefined){
                Mattress[i][j] = obj.Mattress[i][j];
            }
            else{
                Mattress[i] = new Array();
                Mattress[i][j] = obj.Mattress[i][j];
            }
        }
    }
    else{
        Mattress[i] = obj.Mattress[i];
    }
}     
for(var i in Mattress){
    if(typeof(Mattress[i])==='object'){
        for(var j in Mattress[i]){
            alert(j+":"+Mattress[i][j]);
        }
    }
    else{
        alert(i+":"+Mattress[i]);
    }
}