如何将点分隔的字符串批量转换为嵌套map对象
点分隔字符串转嵌套Map实现方案
核心逻辑
- 初始化空对象作为最终嵌套结构的根节点
- 逐个处理每个输入字符串:按
.拆分得到层级路径数组 - 临时变量指向当前遍历的层级节点,依次往下创建嵌套对象,路径最后一项对应的属性赋值为
null
JavaScript 实现代码
function buildNestedMap(strList) { const root = {}; strList.forEach(item => { const pathArr = item.split('.'); let current = root; for (let i = 0; i < pathArr.length; i++) { const key = pathArr[i]; // 最后一级路径赋值为null if (i === pathArr.length - 1) { current[key] = null; break; } // 不存在对应层级则初始化空对象 if (!current[key]) current[key] = {}; // 进入下一层级 current = current[key]; } }); return root; } // 测试示例 const input = [ 'Fruits.Apple.Red', 'Fruits.Apple.Green', 'Fruits.Orange.Yellow', 'Fruits.Watermelon.Yellow', 'Fruits.Watermelon.Red' ]; console.log(buildNestedMap(input));
Python 实现代码
def build_nested_map(str_list): root = {} for item in str_list: path_arr = item.split('.') current = root for index, key in enumerate(path_arr): if index == len(path_arr) - 1: current[key] = None break if key not in current: current[key] = {} current = current[key] return root # 测试示例 input_list = [ 'Fruits.Apple.Red', 'Fruits.Apple.Green', 'Fruits.Orange.Yellow', 'Fruits.Watermelon.Yellow', 'Fruits.Watermelon.Red' ] print(build_nested_map(input_list))
以上实现会自动合并相同父级的子节点,最终输出结构完全符合要求,最后一级节点值均为null。
内容的提问来源于stack exchange,提问作者Jun Ming Kui
相关产品推荐
相关产品推荐

