удаление произвольного свойства из объекта, когда указанное свойство абстрагируется как строка - PullRequest
0 голосов
/ 11 декабря 2018

Допустим, у меня есть объект myObject со свойствами a,b,c.

Если я хочу избавиться от свойства a, я обычно могу использовать:

{a, ...rest} = myObject;

Изатем работайте с rest, чтобы избежать мутации объекта.

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

const stringWithThePropertyName = 'whatever';

, тогда свойство будет:

myObject[stringWithThePropertyName]

, и это будет эквивалентно myObject.whatever.Но что, если я хочу удалить указанное свойство из массива?

То есть при заданном объекте удалить произвольное свойство, имя которого я принимаю в качестве строкового параметра, предпочтительно неизменным образом, как приобычный спред + деструктурирующий синтаксис.

1 Ответ

0 голосов
/ 11 декабря 2018

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

const myObject = {
  foo: 'foo',
  bar: 'bar',
  baz: 'baz'
};

const stringWithThePropertyName = 'foo';
const { [stringWithThePropertyName]:_ , ...rest } = myObject;
console.log(rest);

(переменная _ будет содержать значение foo, поэтому, если вы просто хотите получить объект без foo, просто не используйте _ variable)

Обратите внимание, что этот на самом деле не удаляет свойство из объекта - он только создает новый объект без этого свойства (что совершенно нормально -избегание ненужных мутаций часто является хорошей идеей).Если вы действительно хотите удалить свойство из исходного объекта, используйте delete:

delete myObject[stringWithThePropertyName];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...