展平Javascript字典,保留嵌套键 [英] Flattening a Javascript dictionary, preserving the nested keys
问题描述
我在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屋!