Подтвердить что ты не робот

Уничтожение глубоких свойств

Недавно я начал использовать синтаксис назначения ES6 destructuring и начал знакомство с этой концепцией. Мне было интересно, можно ли извлечь вложенное свойство с использованием того же синтаксиса.

Например, скажем, у меня есть следующий код:

let cagingIt = {
  foo: {
    bar: 'Nick Cage'
  }
};

Я знаю, что могу получить доступ к extract foo в переменную, выполнив:

// where foo = { bar: "Nick Cage" }
let { foo } = cagingIt;

Однако возможно ли извлечь глубоко вложенное свойство, например bar. Возможно, что-то вроде этого:

// where bar = "Nick Cage"
let { foo[bar] } = cagingIt;

Я пробовал найти документацию по этому вопросу, но безрезультатно. Любая помощь будет принята с благодарностью. Спасибо!

4b9b3361

Ответ 1

Существует способ обработки вложенных объектов и массивов с использованием этого синтаксиса. Учитывая описанную выше проблему, решение будет следующим:

let cagingIt = {
      foo: {
        bar: 'Nick Cage'
      }
    };
let { foo: {bar: name} } = cagingIt;

console.log(name); // "Nick Cage"

В этом примере foo ссылается на имя свойства "foo". После двоеточия мы используем bar, который ссылается на свойство "bar". Наконец, name действует как переменная, сохраняющая значение.

Что касается деструкции массива, вы должны обрабатывать его так:

let cagingIt = {
      foo: {
        bar: 'Nick Cage',
        counts: [1, 2, 3]
      }
    };

let { foo: {counts: [ ct1, ct2, ct3 ]} } = cagingIt;
console.log(ct2); // prints 2

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

Надеюсь, это поможет!