我需要将一些路径转换为树对象。 路径应表示具有以下要求的树:
- 对于键后面的".items.properties">,类型应为对象数组。
- 对于键后的".items">,类型应为数组。
- 对于键后面的".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; }