@Ispanec1998

Как сделать динамическую длину ключей для обращения к объекту?

Есть объект this.data = {...}
Возможно ли динамический получить глубину вложенности в объекте?
Например мне надо получать this.data[user_list] и this.data[user][name]
Могу ли я сделать общее присвоение, чтобы не делать проверки по типу
if(args.length === 1) {
много одинакового кода со вставками this.data[args[0]] = value
}
if(args.length === 2) {
много одинакового кода со вставками this.data[args[0]][args[1]] = value
}
if(args.length === 3) {
много одинакового кода со вставками this.data[args[0]][args[1]][args[2]] = value
}


А сделать это без многократного повторения одинакового кода, где у нас меняется лишь вложенность в объекте
  • Вопрос задан
  • 58 просмотров
Пригласить эксперта
Ответы на вопрос 3
0xD34F
@0xD34F Куратор тега JavaScript
const key = args.pop();
args.reduce((p, c) => p[c] ??= {}, this.data)[key] = value;
Ответ написан
Комментировать
HistoryART
@HistoryART Куратор тега JavaScript
Просто включай голову, не бойся ошибок.
Object.keys
Object.keys(obj).forEach(key => {
console.log(obj[key].length)
})
Ответ написан
Комментировать
sergiks
@sergiks Куратор тега JavaScript
♬♬
Есть готовые модули, например, rhalff/dot-object для работы с нотацией свойств через точку:
dot.str('qna.habr.com', 'value', this.data);
/* this.data: 
{
  qna: {
    habr: {
      com: "value"
    }
  }
} */

Установка: npm install dot-object --save
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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