Как деструктурировать объект на основе динамически определенной переменной
Я работаю с неизменным объектом, который мне нужно добавить вычесть массив значений из.
Я знаю, что это возможно, используя ES6, разрушая следующее.
const {countries, remainder} = someObj // {countries:...,languages:..., ...keys};
В результате я получу новый объект без ключа стран.
Поэтому я понял, что мог бы использовать Reduce для массива, чтобы пройти и удалить все значения из объекта, возвращая новый объект в конце, используя параметр по умолчанию, являющийся исходным объектом.
Однако я не уверен, как это сделать, потому что имена ключей определены в массиве.
arrayToRemove.reduce((total, value) => {
const { extractValue: [value], ...remainder } = total
return remainder;
}, { ...originalObj });
arrayToRemove.reduce((total, value) => {
const { [extractValue], ...remainder } = total
return remainder;
}, { ...originalObj });
Я ожидаю получить новый объект без ключей, которые содержатся в массиве с именем arrayToRemove.
Мне нужно сделать это, сохраняя неизменность, поэтому я не могу просто перебрать исходный объект и удалить его из него, поэтому я подумал, что вышесказанное будет ярким способом сделать это.
Любая помощь приветствуется.
2 ответа
Вы можете использовать вычисленные имена свойств с фиктивной в качестве целевого свойства.
Подробнее здесь: шаблон назначения свойств объекта [YDKJS: ES6 & Beyond]
var originalObj = { foo: 1, bar: 2, baz: 3, },
arrayToRemove = ['foo', 'bar'],
result = arrayToRemove.reduce((total, key) => {
const { [key]: dummy, ...remainder } = total;
return remainder;
}, originalObj);
console.log(result);
arrayToRemove.reduce((obj, key) => {
const { [key]: value, ...remainder } = obj
return remainder
}, originalObj)