オブジェクトから値を変更せずに削除する 質問する

オブジェクトから値を変更せずに削除する 質問する

元のオブジェクトを変更せずに、特定のキーのオブジェクトから値を削除する簡単で簡単な方法は何ですか?

次のようなことをしたいです:

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
}

代わりに、omitlodashユーティリティライブラリからの関数:

let o2 = _.omit(o, 'lastname')

これは以下の一部として利用可能ですロダッシュパッケージまたはスタンドアロンとして省略パッケージ。

おすすめ記事