1. 属性を追加するオブジェクトをコピーすると、新しいプロパティが追加されます。 この例では、ユーザー オブジェクトを userWithPass にコピーし、パスワード プロパティを追加します。 const ユーザー = { id: 110, 名前: 'Kayson Li'} const userWithPass = { ...user, password: 'パスワード!' } ユーザー //=> { id: 110、名前: 'Kayson Li'} userWithPass //=> { id: 110、 name: 'Kayson Li'、 password: 'パスワード!' } 2. 複数のオブジェクトを結合する... を使用すると、複数のオブジェクトを新しいオブジェクトに結合することができます。 part1 と part2 を user1 にマージします。 const part1 = { id: 110, name: 'ケイソン・リー' } const part2 = { id: 110, password: 'パスワード!' } 定数 user1 = { ...part1, ...part2 } //=> { id: 110、 name: 'Kayson Li'、 password: 'パスワード!' } 3. オブジェクトのプロパティを削除するオブジェクトからプロパティを削除するには、構造化分解を REST 演算子と組み合わせて使用できます。この例では、パスワードが分解され、他の属性が REST オブジェクトに保持されて返されます。 const noPassword = ({ パスワード、...rest }) => rest 定数ユーザー = { id: 110, 名前: 'ケイソン・リー'、 パスワード: 'パスワード!' } noPassword(user) //=> { id: 110, name: 'Kayson Li' } 4. 属性を動的に削除する例を見てみましょう。 removeProperty 関数は、パラメータ prop を受け入れます。動的プロパティ名機能を使用すると、コピーされたオブジェクトから prop を動的に削除できます。 定数user1 = { id: 110, 名前: 'ケイソン・リー'、 パスワード: 'パスワード!' } const removeProperty = prop => ({ [prop]: _, ...rest }) => rest // ---- ------ // \ / // 動的分解 const removePassword = removeProperty('password') 定数removeId = removeProperty('id') removePassword(user1) //=> { id: 110, name: 'Kayson Li' } removeId(user1) //=> { name: 'Kayson Li', password: 'パスワード!' } 5. 属性の順序を調整するオブジェクトのプロパティが希望どおりの順序になっていない場合があります。いくつかのトリックを使用すると、属性を前面または背面に移動できます。 id を先頭に移動するには、展開されたオブジェクトの前に id: undefined を配置します。 定数user3 = { パスワード: 'パスワード!', 名前: 'ブルース'、 id: 300 } const 整理 = オブジェクト => ({ id: undefined, ... オブジェクト }) // ------------- // / // id を最初の属性位置に移動する organize(user3) //=> { id: 300, password: 'パスワード!', name: 'Bruce' } パスワードを最後の位置に移動するには、まずオブジェクトからパスワードを分解し、展開されたオブジェクトの後にパスワードを配置します。 定数user3 = { パスワード: 'パスワード!', 名前:「ブルース」 id: 300 } const organize = ({ パスワード, ...オブジェクト }) => ({ ...オブジェクト, パスワード }) //-------- // / // パスワードを末尾に移動する organize(user3) //=> { name: 'Bruce'、 id: 300、 password: 'パスワード!' } 6. プロパティのデフォルト値を設定するオブジェクトに特定の属性がない場合、その属性をオブジェクトに追加してデフォルト値を設定する必要がある場合があります。 たとえば、user2 には引用符属性がありません。setDefaults 関数の目的は、すべてのオブジェクトに引用符が付いており、デフォルト値 [] があることを確認することです。 setDefaults(user2) を実行すると、返されるオブジェクトに引用符 [] が含まれます。 setDefaults(user4) を実行します。user4 にはすでに引用符が付いているため、変更されません。 定数user2 = { id: 200, 名前: 'ジャック・マー' } 定数user4 = { id: 400, 名前: '魯迅'、 引用: ["私はそんなことは言っていない..."] } const setDefaults = ({ quotes = [], ...object}) => ({ ...オブジェクト、引用符 }) デフォルト設定(ユーザー2) //=> { id: 200、名前: 'ジャック・マー'、引用符: [] } デフォルト設定(user4) //=> { //=> id: 400, //=> 名前: '魯迅', //=> 引用: ["私はそんなことは言っていません..."] //=> } この属性を先頭に置きたい場合は、次のように記述します。 const setDefaults = ({ ...オブジェクト}) => ({ 引用符: [], ...オブジェクト }) 7: 属性名の変更これまでの手法を組み合わせることで、属性の名前を変更する関数を作成できます。 一部のオブジェクトに大文字の ID 属性があり、それを小文字に変更したいとします。どうすればよいでしょうか?まず、オブジェクトから ID 値を分解し、この値を新しいオブジェクトにマージして小文字の ID に変更します。 const の名前が変更されました = ({ ID, ...object }) => ({ id: ID, ...object }) 定数ユーザー = { ID: 500, 名前: 「張全丹」 } renamed(user) //=> { id: 500, name: '张全蛋' } 8. 他にも素晴らしい手術がある条件に基づいて特定の属性を追加するかどうかを決定できます。これは、リクエスト パラメータを構築するときに非常に便利です。たとえば、パスワードに値がある場合にのみこの属性を追加します。 const ユーザー = { id: 110, 名前: 'ケイソン・リー' } const password = 'パスワード!' 定数userWithPassword = { ...ユーザー、 id: 100, ...(パスワード && { パスワード }) } userWithPassword //=> { id: 110、 name: 'Kayson Li'、 password: 'パスワード!' } 上記は、JS ES6 スプレッド演算子のいくつかの素晴らしい使用方法の詳細です。JS ES6 スプレッド演算子の詳細については、123WORDPRESS.COM の他の関連記事に注目してください。 以下もご興味があるかもしれません:
|
<<: Windows システムに mysql5.7.21 をインストールするための詳細なチュートリアル
>>: docker mysqlの起動時に初期化SQLを実行する
データベース操作を学び始めたばかりです。今日、データを保存していたところ、エラーが発生していることに...
K8s k8s はクラスターです。クラスターには複数の名前空間があります。名前空間の下には複数のポッ...
まず、変更イベントは 1 つだけです。 changelevel() //値を選択選択を変更して行の値...
BFCコンセプト:ブロック フォーマット コンテキストは、BFC 内の要素を外部の要素から分離する独...
MySQL 8 の新機能: MySQL をバージョン 5.x から 8.x に直接アップグレードする...
目次1. 鏡を見つける2. RabbitMQイメージをダウンロードする3. RabbitMQコンテナ...
目次導入公開コード(バックエンドインターフェース)例 1: 最もシンプル (純粋な HTML)コード...
mysql 1 つのテーブル列を別のテーブルにコピーする場合によっては、フィールドから別の新しいフィ...
目次先読みと後読みをキャプチャグループと組み合わせる捕獲グループと非捕獲グループ前を向いて、後ろを振...
序文lvm (論理ボリューム マネージャー) 論理ボリューム管理は、Linux システムのニーズを満...
【コンテンツ】: 1.背景画像のグラデーションスタイルを使用する2. スケールを使ってズームできる...
問題を見つける最近、プロジェクトで問題が発生しました。接続が多すぎるため、「接続が多すぎます」という...
Tomcatをインストールする前に、まずJDK環境をインストールしてくださいLinux サーバー上で...
Vue+iview メニューとタブのリンク現在、vue+iview を使用してバックエンド管理システ...
tomcat の web.xml を構成する場合、サーブレットは比較的重要な問題です。ここでは、サー...