Задать вопрос
@swcalc

Как из строки получить объект на JS?

как реализовать функцию, чтобы ей можно было передать func('profile-statistic-replies-value', 990);, а на выходе получить объект profile.statistic.replies.value = 990;
  • Вопрос задан
  • 574 просмотра
Подписаться 2 Простой 2 комментария
Решения вопроса 1
@swcalc Автор вопроса
Всем спасибо, выдумал свое решение))
var tree = node.getAttribute('data-staff').toString().split('-');
var end = {};
end[tree.pop()] = node;
while (tree.length) {
    var obj = {};
    obj[tree.pop()] = end;
    end = obj;
}
console.log(end);
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@RidgeA
разбить строку по разделителю и рекурсивно создать объект с нужными ключами и присвоить значение.
Ответ написан
kleinmaximus
@kleinmaximus
Senior Full-stack Javascript Developer
function deepObject(list, value) {
  if (list.length === 0) {
  	return value;
  }
  var result = {};  
  result[list.pop()] = value;
  return deepObject(list, result);
}

console.log(deepObject('profile-statistic-replies-value'.split('-'), 900));


https://jsfiddle.net/64sguzbb/

P.S.: Если использовать плюшки ES6, то можно короче.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы