@LieKarp

Как разделить строки массива на объект?

Есть массива, для примера:
[
[div]restored: 68
[div2]restored: 88,
[mode]Easy [div]restored: 88
[mode]Normal [div]restored: 99
]

Как можно получить объект вида:
{                                                             
  div: { restored: 68 },                                      
  div2: { restored: 88 },                                     
  mode: { 
              easy: { div: { restored: 88 } }, 
              normal: { div: { restored: 99 } } 
   }
}
  • Вопрос задан
  • 118 просмотров
Решения вопроса 1
Aetae
@Aetae Куратор тега JavaScript
Тлен
var list = {
  '[div]restored': 68,
  '[div2]restored': 88,
  '[mode]Easy [div]restored': 88,
  '[mode]Normal [div]restored': 99
};


Object.entries(list).reduce((acc, [key, value]) => {
  const keys = key
    .split(/\[(.+?)\]/)
    .map(k => k.trim().toLowerCase())
    .filter(Boolean)

  const last = keys.pop();

  keys.reduce(
    (sub, key) => sub[key] ?? (sub[key] = {}), 
    acc
  )[last] = value;

  return acc;
}, {});
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы