[解決済み] 変異を伴わないオブジェクトからの値の削除
2022-07-20 11:47:47
質問
元のオブジェクトを変異させることなく、特定のキーでオブジェクトから値を削除するための良い方法と短い方法は何でしょうか?
のようなことをしたいのですが。
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大歓迎です。
ありがとうございました。
どのように解決するのですか?
更新してください。
オブジェクトからプロパティを削除するには、トリッキーな デストラクチャーの割り当て :
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')
の一部として利用可能です。 ロダッシュ パッケージの一部として、あるいはスタンドアロンで lodash.omit(ロダッシュ・オミット パッケージとして使用することもできます。
関連
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] JavaScriptでオブジェクトをディープクローンする最も効率的な方法は何ですか?
-
[解決済み] JavaScript で配列に値が含まれているかどうかを確認するにはどうすればよいですか?
-
[解決済み] JavaScriptのオブジェクトが空であることをテストするにはどうすればよいですか?
-
[解決済み] JavaScriptのオブジェクトにキーが存在するかどうかをチェックする?
-
[解決済み】オブジェクトからプロパティを削除する(JavaScript)
-
[解決済み] ジェスト あるクラスの特定のメソッドをモックする方法
-
[解決済み] チェックボックスが選択されているかどうかを確認するjQuery
-
[解決済み] React js 親コンポーネントから子コンポーネントの状態を変更する
-
[解決済み] CORS OriginヘッダーとCSRFトークンによるCSRF保護
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] JavaScriptで次の要素/前の要素を取得しますか?
-
[解決済み] node.jsで文字列のsha1ハッシュを取得するにはどうすればよいですか?
-
[解決済み] JSXとLoadshを使用して、ある要素をn回繰り返す方法
-
[解決済み] react-routerのハッシュフラグメントからクエリパラメータを取得する
-
[解決済み] TypeScriptプロジェクトで既存のC#クラス定義を再利用する方法
-
[解決済み] ECMAScriptとは?
-
[解決済み] jQuery UI - 外でクリックされたらダイアログを閉じる
-
[解決済み] javascriptからフィールドを無効とすることはできますか?
-
[解決済み] truthy や falsy を明示的なブール値、すなわち True や False に変換する。
-
[解決済み] node.js シェルコマンドの実行