Как удалить динамическое свойство объекта? - PullRequest
1 голос
/ 25 апреля 2019

Я пытаюсь удалить динамическое свойство объекта. Проблема в том, что свойство зависит от массива ключей. Давайте посмотрим код:

let keys = ['23', 'test', '12']; // Example but this is dynamic
let temp = this.array;
keys.forEach(k => {
  temp = temp[k];
});
delete temp;

Я хочу удалить this.array ['23 '] [' test '] [' 12 ']. Но я получил ошибку: «Удалить идентификатор нельзя в строгом режиме». Как это сделать?

Ответы [ 2 ]

3 голосов
/ 25 апреля 2019

Я хочу удалить this.array ['23 '] [' test '] [' 12 ']

Запись только этого, delete this.array['23']['test']['12'], будет работать.Но с вашим синтаксисом delete temp вы не удаляете свойство, а пытаетесь удалить переменную.Это не будет летать.Даже в нестрогом режиме он не изменит объект this.array, вы просто объявите переменную и отмените ее.

В вашем цикле вы должны остановить на один шаг раньше, чтобы удалить свойство, не переменная:

keys.forEach((key, index, arr) => {
  if (index < arr.length - 1) { 
    temp = temp[key];
  } else {
    delete temp[key];
  }
});
0 голосов
/ 25 апреля 2019

Вы не можете удалить его, но вы можете установить его на null.Попробуйте:

temp = null;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...