Каков наилучший способ в JavaScript для возврата объекта без одного или нескольких свойств?
Я могу назначить ключ на undefined, и это точно сработает, но что, если я хочу полностью избавиться от этого ключа?
function removeCKey() {
const obj = {a: 'a', b: 'b', c: 'c'}
return {
...obj,
c: undefined,
};
}
const myObj = removeCKey();
Кроме того, я хочу избежать создания промежуточного объекта, в котором я использую оператор распространения, подобный этому
function removeCKey() {
const obj = {a: 'a', b: 'b', c: 'c'}
const {c, ...rest} = newObj
return rest;
}
const myObj = removeCKey();
Вы можете delete obj.c.
Это прекрасно работает @SergiuParaschiv, но что, если мне нужно удалить много ключей?
К вашему сведению, оператор удалить
Разрушение: const { c, ...result } = obj; return result;
Вы составляете список ключей и delete obj[k], где k — каждое значение в списке.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Только delete то, что вам не нужно:
function omit(obj, keys) {
const newObj = { ...obj }; // shallow copy...
keys.forEach(key => {
delete newObj[key]; // ... and `delete`.
});
return newObj;
}
omit({a: 'a', b: 'b', c: 'c'}, ['c']);
выходы
{ a: 'a', b: 'b' }
Вы можете использовать ES6 назначение деструктуризации объекта.
function removeKeys() {
const obj = {
a: 'a',
b: 'b',
c: 'c'
};
// extract property c in variable c
// and rest of the value into res
let { c, ...res } = obj;
return res;
}
console.info(removeKeys())
Мутация объекта или создание копии?