展平Javascript字典,保留嵌套键 [英] Flattening a Javascript dictionary, preserving the nested keys

查看:54
本文介绍了展平Javascript字典,保留嵌套键的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在SO上有一些用于使数组JavaScript扁平化的方法,即将 [1,[2,3]] 转换为 [1,2,3] .但是我正在寻找一种简洁的方法来在保留键的同时展平字典.具体来说,我想要一个像这样的字典:

I've methods on SO for flattening an array javascript, i.e. converting [1,[2,3]] into [1,2,3]. But I'm looking for a concise method of flattening a dictionary while preserving the keys. Specifically, I want a dictionary that looks like this:

{'key1':1,'key2':{'key3':2,'key4':3,'key5':{'key6':4}}}

要转换为:

{'key1':1, 'key2.key3':2,'key2.key4':3,'key2.key5.key6':4}

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

The exact output format (dictionary, list of pairs, etc) isn't important, as long as it clearly associates the string of nested keys with a value. For my purposes, it's also OK to assume that none of the keys contain a . character, so that it can be used to denote the next key.

推荐答案

var keys = {'key1':1,'key2':{'key3':2,'key4':3,'key5':{'key6':4}}}, 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);

希望这就是您想要的.

这篇关于展平Javascript字典,保留嵌套键的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆