Преобразуйте параметры объекта во вложенный массив в Node

1

У меня есть объект, который выглядит примерно так:

let set = {
  key1: 'value1',
  key2: 'value2',
  key3: 'value3',
  key4: 'ignored',
  key5: 'also ignored'
}

У меня также есть массив ключей, предназначенный для отслеживания того, какие ключи из set объекта должны использоваться, а также порядок вложенности:

let keys = ['key1', 'key2', 'key3']

Как преобразовать set объект в вложенный объект на основе иерархии, определенной в keys? Мой желаемый результат будет выглядеть так:

{
  key1: [{
    name: 'value1',
    key2: [{
      name: 'value2',
      key3: [{
        name: 'value3'
      }]
    }]
  }]
}

Оба set и keys могут иметь произвольную длину.

Теги:

1 ответ

0
Лучший ответ

Вы можете уменьшить ключи и вернуть для каждого шага внутренний объект.

var set = { key1: 'value1', key2: 'value2', key3: 'value3', key4: 'ignored', key5: 'also ignored' },
    keys = ['key1', 'key2', 'key3'],
    result = {};

keys.reduce(function (o, k) {
    var temp = { name: set[k] };
    o[k] = [temp];
    return temp;
}, result);
    
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
  • 1
    Работает отлично!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню