在javascript中迭代对象,保留父对象

在javascript中迭代对象,保留父对象,javascript,node.js,loops,object,iteration,Javascript,Node.js,Loops,Object,Iteration,我在和一个迭代函数作斗争。我有一个目标: var table = { "general": { "amount": ["mandatory", "isAmount"], "order_id": ["mandatory", "isString"] }, "card": { "number": ["Regex:/^[0-9]{16}$/", "mandatory"], "expiry": {

我在和一个迭代函数作斗争。我有一个目标:

var table = {
    "general": {
        "amount": ["mandatory", "isAmount"],
        "order_id": ["mandatory", "isString"]
    },
    "card": {
        "number": ["Regex:/^[0-9]{16}$/", "mandatory"],
        "expiry": {
            "month": ["Regex:/^[0-9]{2}$", "mandatory"],
            "year": ["Regex:/^[0-9]{4}$/", "mandatory"]
        },
        "network": ["List:maestro|visa|mastercard|amex|jcb", "mandatory"],
        "cvv": ["Regex:/^[0-9]{3,4}$/", "mandatory"]
    }
}
这里的目标是能够
console.log

general.amount : ["mandatory", "isAmount"]
general.order_id: ["mandatory", "isString"]
card.number: ["Regex:/^[0-9]{16}$/", "mandatory"]
card.expiry.month: ["Regex:/^[0-9]{2}$", "mandatory"]
card.expiry.year: ["Regex:/^[0-9]{4}$/", "mandatory"]
card.network: ["List:maestro|visa|mastercard|amex|jcb", "mandatory"]
card.cvv: ["Regex:/^[0-9]{3,4}$/", "mandatory"]
-->保留每个字段的父字段,并显示它们

事实上,我已经尝试了很多东西,这里是开始:

function boucle(object, parent) {
    for (var key in object) {
        if (object.hasOwnProperty(key)) {
            var value = object[key];
            if (value.length) {
                console.log(parent + '.' + key);
            } else {
                if (parent) {
                    parent += "."+key;
                } else {
                    parent = key;
                }
                boucle(value, parent)
            }
        }
    }
}
我不知道该去哪里。我必须改变对象吗


提前感谢

以下是解决方案:

Use this.
$.each(table,function(key1){
                $.each(table[key1],function(key2){
                    if(table[key1][key2] instanceof Array){
                        console.log(key1+'.'+key2+' :'+table[key1][key2][0]+','+table[key1][key2][1]);
                    }else{ 
                        $.each(table[key1][key2],function(key3){
                            console.log(key1+'.'+key2+'.'+key3+ ' :'+table[key1][key2][key3][0]+','+table[key1][key2][key3][1]);
                        })

                    }

                })
            })
function boucle(obj, parent) {
    for (var i in obj) {
        var parent1 = (parent ? parent + '.' : '') + i;
        if (obj.hasOwnProperty(i)) {
            if (obj[i].length) {
                console.log(parent1);
            } else {
                boucle(obj[i], parent1);
            }
        }
    }
}

谢谢,但是我希望这个函数能够工作,即使初始物体的深度是4,5…100,我刚才给了你这个问题的想法。您的代码适用于第n个深度。但是你的问题解决了。