Как построить дерево из тропинки - PullRequest
0 голосов
/ 20 июня 2020

Мне нужно преобразовать какой-то путь в объект дерева. путь должен представлять дерево со следующими требованиями:

  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 -pointer':

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

Итак, если у вас есть способ преобразовать мою структуру данных в ожидаемую, это может помочь.

1 Ответ

0 голосов
/ 21 июня 2020

Вы можете взять части и посмотреть вперед для ключа со следующей строкой 'items', создать новое свойство с пустым массивом.

Для 'properties' создать новый объект и pu sh во временный массив.

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; }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...