javascript - Javascript - 来自用点分隔的字符串数组的嵌套字典
问题描述
我必须将数组转换为嵌套字典。
如果我有一个字符串数组。每个字符串由点分隔的数字组合而成,每个数字表示翻译字典中的一个键。(最后一个数字除外)
例如
我有这个数组:
array = ["5.1.1.1","5.1.1.2","5.1.1.3",..."5.2.1.2","5.2.1.4"..."1.1.1.1"..."1.2.1.3"]
我需要输出是这样的:
var output = {
'5': {
'1': {
'1': [1,2,3],
'2': [1]
},
'2':{
'1': [2,4],
'2': [1]
}
},
'1': {
'1':{
'1':[1,2,5],
'2':[1]
},
'2':{
'1':[2,3]
}
}
};
我有一个相反的函数,它得到一个嵌套字典,她的输出是一个数组。
链接:https ://stackoverflow.com/a/59191937/7593555
感谢您的帮助:)。
解决方案
您可以使用递归函数,使用上一个问题的输出:
const arr = [
"1.1.1.1",
"1.1.1.2",
"1.1.1.5",
"1.1.2.1",
"1.2.1.2",
"1.2.1.3",
"5.1.1.1",
"5.1.1.2",
"5.1.1.3",
"5.1.2.1",
"5.2.1.2",
"5.2.1.4",
"5.2.2.1"
]
const map = {}
const addProp = ([k, ...r], map) => {
if (r.length === 1) return map[k] ? map[k].push(r[0]) : map[k] = r
if (map[k]) {
addProp(r, map[k])
} else {
map[k] = {}
addProp(r, map[k])
}
}
arr.map(e => e.split('.')).forEach(e => addProp(e, map))
console.log(map)
推荐阅读
- javascript - 在laravel中通过ajax删除数据
- vim - Vim 查找和替换时间 hh:mm
- javascript - 是否可以仅在 JavaScript 中制作按钮?
- php - 自动加载一个php文件,它是jquery Ajax方法的url
- c# - 使用 EPPlus 验证 Excel(电子表格)文件
- python - PyCharm:函数参数的正则表达式字符串意图
- solidity - Solidity 错误:预期标识符,得到“LParen”
- google-chrome-extension - Chrome 扩展的可变价格许可证
- elasticsearch - 使用术语聚合执行搜索时如何返回实际值(不是小写)?
- javascript - 使用类和无状态组件传递所有道具