元のオブジェクトを変更せずに、特定のキーのオブジェクトから値を削除する簡単で簡単な方法は何ですか?
次のようなことをしたいです:
let o = {firstname: 'Jane', lastname: 'Doe'};
let o2 = doSomething(o, 'lastname');
console.log(o.lastname); // 'Doe'
console.log(o2.lastname); // undefined
このようなタスクには不変性ライブラリがたくさんあることは知っていますが、ライブラリなしで済ませたいと思っています。ただし、これを行うには、メソッドをユーティリティ関数として抽象化せずに、コード全体で使用できる簡単で短い方法が必要になります。
たとえば、値を追加するには、次のようにします。
let o2 = {...o1, age: 31};
これは非常に短く、覚えやすく、ユーティリティ関数を必要としません。
値を削除するには、これのようなものがありますか? ES6 は非常に歓迎されます。
どうもありがとうございます!
ベストアンサー1
アップデート:
オブジェクトからプロパティを削除するには、構造化割り当て:
const doSomething = (obj, prop) => {
let {[prop]: omit, ...res} = obj
return res
}
ただし、削除したいプロパティ名が静的である場合は、簡単なワンライナーで削除できます。
let {lastname, ...o2} = o
最も簡単な方法は、単に
オブジェクトを変更する前にクローンを作成することです。
const doSomething = (obj, prop) => {
let res = Object.assign({}, obj)
delete res[prop]
return res
}
代わりに、omit
lodash
ユーティリティライブラリからの関数:
let o2 = _.omit(o, 'lastname')