javascript - 通过拆分字符串 javascript 将字符串转换为嵌套数组对象
问题描述
将点符号字符串转换为数组对象,例如,
let obj = { 'user-0-address-pincode': 665766, 'user-0-address-city': 'Chennai', 'user-1-address-pincode': 32432, 'user-1-address-city': 'Bangalore'};
// Expectation output will be
{
user: [
{
address: {pincode: 665766, city: 'Chennai'}
},
{
address: {pincode: 32432, city: 'Bangalore'}
}
]
}
请帮我解决这个问题。
解决方案
您可以使用reduce
和split
方法创建一个函数,该函数将带有键的对象作为路径,然后基于这些键创建嵌套结构。
let obj = {
'user-0-address-pincode': 665766,
'user-0-address-city': 'Chennai',
'user-1-address-pincode': 32432,
'user-1-address-city': 'Bangalore'
};
function parse(data) {
return Object.keys(obj).reduce((r, k) => {
k.split('-').reduce((a, e, i, arr) => {
const next = arr[i + 1]
if (!next) return a[e] = data[k]
else return a[e] || (a[e] = (!isNaN(+next) ? [] : {}))
}, r)
return r;
}, {})
}
const result = parse(obj)
console.log(result)
推荐阅读
- python - python - 在绘图下方添加长文本并将其保存为 pdf 的最佳方法
- flash - 在 Chromebook 上使用 Flash
- python - 使用脚本顶部的函数初始化变量
- python - Yamnet - 得分最高的班级的模型输出分数
- google-apps-script - 需要帮助将我的 VBA 代码转换为 Google 脚本
- python - 我知道的 Google Vision API 黑名单字符不存在吗
- security - Sails.js 依赖漏洞,npm audit fix --force 不起作用
- javascript - 根据用户的来源(现有网站或谷歌搜索)更改内容
- xml - MWS 产品提要 创建产品
- c# - 受保护字段中的 C# 内部类型