扁平化 Javascript 字典,保留嵌套键

J-b*_*bob 1 javascript dictionary

我有一些方法可以展平数组 javascript,即转换[1,[2,3]][1,2,3]. 但我正在寻找一种简洁的方法来展平字典,同时保留键。具体来说,我想要一本如下所示的字典:

{'key1':1,'key2':{'key3':2,'key4':3,'key5':{'key6':4}}}
Run Code Online (Sandbox Code Playgroud)

需转换为:

{'key1':1, 'key2.key3':2,'key2.key4':3,'key2.key5.key6':4}
Run Code Online (Sandbox Code Playgroud)

确切的输出格式(字典、对列表等)并不重要,只要它清楚地将嵌套键的字符串与值相关联即可。出于我的目的,假设没有一个键包含.字符也是可以的,这样它就可以用来表示下一个键。

Tri*_*ode 5

var keys = {'key1':1,'key2':{'key3':2,'key4':3,'key5':{'key6':4}}};
var result = {};

function serialize(keys, parentKey){
    for(var key in keys){
        if(parseInt(keys[key], 10)){
            result[parentKey+key] = keys[key];
        }else{
            serialize(keys[key], parentKey+key+".");
        }
    }
}
serialize(keys, "");
console.log(result);
Run Code Online (Sandbox Code Playgroud)

希望这是您想要的:

{ key1: 1, 'key2.key3': 2, 'key2.key4': 3, 'key2.key5.key6': 4 }
Run Code Online (Sandbox Code Playgroud)