如何从路径构建树



我需要将一些路径转换为树对象。 路径应表示具有以下要求的树:

  1. 对于键后面的".items.properties">,类型应为对象数组。
  2. 对于键后的".items">,类型应为数组。
  3. 对于键后面的".properties">,类型应为对象。

例如,对于此路径:'key1.items.properties.key2.items.properties.key3.items'

key1 是键,类型是对象数组。

这是我期望从这条路径中获得的最终结果

'key1.items.properties.key2.items.properties.key3.items' // path
//expected
{
key1: [
{
key2:[
{
key3:[]
}
]
}
]
}

编辑: 我知道如何使用"json指针"将此路径转换为此数据结构:

{
key1: {
key2:{
{
key3:[]
}
}
}
}

因此,如果您有办法将我的数据结构转换为预期,它会有所帮助。

您可以获取这些部分并展望带有以下'items'字符串的键,即创建一个带有空数组的新属性。

对于'properties'创建一个新对象并将其推送到临时数组。

var string = 'key1.items.properties.key2.items.properties.key3.items',
parts = string.split('.'),
result = {},
temp = result;    
for (let i = 0; i < parts.length; i++) {
if (parts[i] === 'properties') {
let object = {};
temp.push(object);
temp = object;
continue;
}
if (parts[i + 1] === 'items') {
let items = [];
temp[parts[i]] = items;
i++;
temp = items;
continue;
}    
}
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

相关内容

  • 没有找到相关文章

最新更新