JS ES の新機能: 拡張演算子の紹介

JS ES の新機能: 拡張演算子の紹介

1. スプレッド演算子

スプレッド演算子は 3 つのドット ... で、複数の引数 (関数呼び出しなど) または複数の値 (配列など) が必要な場合に、式をその場で展開し、コンマで区切られた引数のシーケンスに変換できます。

サンプルコードは次のとおりです。

// 配列を定義する let arr = [1, 2, 3, 4, 5, 6]
// ... スプレッド演算子を使用して展開 console.log(...arr); // 1 2 3 4 5 6

// 関数を定義する function fun(...item) {
  console.log(...項目);
}
// 関数 fun(1, 2, 3, 4, 5, 6) を呼び出す // 1 2 3 4 5 6

// 式で使用する let x = 10
arr = [
  ...(x > 0 ? ['a'] : []),
  'b'、
];
console.log(...arr); //ab

2. 代替のapply()メソッド

スプレッド演算子は配列を展開できるため、 applyメソッドで配列を関数パラメータに変換する必要はありません。

サンプルコードは次のとおりです。

// 関数を定義する function fun(a, b, c, d, e) {
  コンソールにログ出力します。
}
// 配列を定義する let arr = [1, 2, 3, 4, 5]
// ES5 呼び出しメソッド fun.apply(null, arr) //1 2 3 4 5
// ES6 呼び出しメソッド fun(...arr) // 1 2 3 4 5

実際の開発で配列内の最大値を取り出す場合、次のような方法が使用されます。

arr = [1, 20, 30, 50, 3, 88, ] とします。
// ES5 では、max = Math.max.apply(null, arr) とします。
console.log(最大); // 88

E は次のように記述されます。

arr = [1, 20, 30, 50, 3, 88, ] とします。
// ES6 では max = Math.max(...arr) とします
console.log(最大); // 88


3. 拡張演算子の適用

拡張配列の応用は主に以下の側面に反映される。

1. 配列をコピーする

ECMAScript 2015より前では、単に arr1 を arr2 に代入した場合、arr2 を変更すると arr1 も変更されます。これを浅いコピーと呼びます。

サンプルコードは次のとおりです。

まず、ディープ コピーとシャロー コピーの概念を理解しましょう。

  • ディープコピー: 配列内の要素の内容をコピーする
  • 浅いコピー:配列要素の内容のメモリアドレスをコピーする
arr1 = [1, 2, 3, 4, 5]とします。
arr2 = arr1とする
console.log(arr2); // [ 1, 2, 3, 4, 5 ]
// arr2のデータ内容を変更します。 arr2[2] = 6;
// 両方とも変更されます console.log(arr1, arr2); // [ 1, 2, 6, 4, 5 ] [ 1, 2, 6, 4, 5 ]

ディープコピーを完了する場合のサンプルコードは次のようになります。

arr1 = [1, 2, 3, 4, 5]とします。
arr2 = []とする
// ES5 の場合 (let i = 0; i < arr1.length; i++) {
  arr2[i] = arr1[i];
}
ar2[2] = 6;
// arr2 のみが変更 console.log(arr1, arr2); // [ 1, 2, 3, 4, 5 ] [ 1, 2, 6, 4, 5 ]

// ES6 arr2 = [...arr1]
ar2[2] = 6;
// arr2 のみが変更 console.log(arr1, arr2); // [ 1, 2, 3, 4, 5 ] [ 1, 2, 6, 4, 5 ]

2. 配列を結合する

スプレッド演算子は、配列のマージを記述する新しい方法を提供します。サンプルコードは次のとおりです。

arr1 = ['a', 'b'];
定数 arr2 = ['c'];
定数 arr3 = ['d', 'e'];

// ES5 マージされた配列 console.log(arr1.concat(arr2, arr3)); // [ 'a', 'b', 'c', 'd', 'e' ]


// ES6 マージ配列 console.log([...arr1, ...arr2, ...arr3]); // [ 'a', 'b', 'c', 'd', 'e' ]

どちらの方法も浅いコピーであることに留意してください。

3. 分離割り当てで使用する

スプレッド演算子を分割代入と組み合わせて、配列を生成することができます (残りのデータを取得するため)。

注意:スプレッド演算子は最後にのみ配置できます。

サンプルコードは次のとおりです。

// シナリオ分析: 配列の最初と最後の値を取得する let arr = [1, 2, 3, 4, 5]
まず、休んでください。
// ES5 の書き方: Array.slice() 関数を借用する first = arr[0]
残り = arr.slice(1)
console.log(first, rest); // 1 [ 2, 3, 4, 5 ]
// ES6 の書き方 [first, ...rest] = arr
console.log(first, rest); // 1 [ 2, 3, 4, 5 ]

4. 文字列を配列に分割する

スプレッド演算子は文字列を真の配列に変換することもできます。サンプルコードは次のとおりです。

let str = '狐鬼の仲人'
console.log([...str]); // [ 'fox', 'demon', 'little', 'red', 'mother' ]

JS ES拡張演算子の新機能紹介に関するこの記事はこれで終わりです。ES拡張演算子の導入についての詳細は、123WORDPRESS.COMの過去の記事を検索するか、以下の関連記事を引き続き閲覧してください。今後とも123WORDPRESS.COMをよろしくお願いいたします。

以下もご興味があるかもしれません:
  • JavaScript の基本演算子
  • JS演算子の簡単な使用例
  • js演算子の特殊な使用法
  • JavaScript の式と演算子の詳細な説明
  • これまでにないほど詳細に解説されたJavaScript演算子

<<:  HTML ドキュメントに CSS を埋め込む一般的な 3 つの方法

>>:  CSS フロートプロパティ図 フロートプロパティの詳細

推薦する

Nacos で MySQL8 を設定する方法

1. MySQLデータベースnacos_configを作成する2. データベース nacos_con...

Linux dateコマンドの知識ポイントのまとめ

使用法: date [オプション]... [+フォーマット]または: date [-u|--utc|...

Windows 64 ビット版の MySQL 8.0.15 インストール チュートリアル

まず公式サイトにアクセスしてダウンロードし、MySQLダウンロードをクリックします。 ダウンロードし...

MySQLにおけるビューの作成(CREATE VIEW)と使用制限の詳しい説明

この記事では、例を使用して、MySQL ビューの作成 (CREATE VIEW) と使用上の制限につ...

ES6 ループと反復可能オブジェクトの例

この記事では、ES6 の for ... of ループについて説明します。古い方法以前は、JavaS...

Alibaba Cloud Server への Web プロジェクトのデプロイについて (5 つの手順)

1.まずAlibaba Cloudのウェブサイトにログインしてアカウントを登録し、サーバータイプを...

Vueはランニングライトのシンプルな効果を実現

この記事では、マーキーのシンプルな効果を実現するためのVueの具体的なコードを参考までに共有します。...

JavaScript コードベースをよりクリーンにする 5 つの方法

目次1. 短絡や条件文の代わりにデフォルトのパラメータを使用する2. 複数の条件の処理3. スイッチ...

CSS変数var()の使い方を理解する必要があります

Web プロジェクトがどんどん大きくなると、CSS は天文学的な大きさと複雑さを増します。この問題を...

Docker+K8S+GitLab/SVN+Jenkins+Harbor をベースにした継続的インテグレーション配信環境の構築に関する詳細なチュートリアル

目次環境設定の概要1.K8Sとは何ですか? 2. K8S を使用する理由3. K8S を使用する利点...

CSS と JavaScript を使用して管理ダッシュボードのレイアウトを構築するためのサンプル コード

あなたが作成するものこの新しいチュートリアルでは、CSS と JavaScript を使用して、レス...

MySQL 起動時に「サーバーは PID ファイルを更新せずに終了しました」というエラーが報告される理由の詳細な分析

多くの人が MySQL の起動時にこのエラーに遭遇しています。まず、このエラーの前提は、サービス ス...

React でカレンダー コンポーネントを構築するためのステップ バイ ステップ ガイド

目次事業背景テクノロジーの活用技術的な問題デザインのアイデア😱 困惑と苦痛に満ちた顔🙄考え始める🌲デ...

モバイルデバイス用のメタタグ設定の完全なリスト

序文以前フロントエンドを勉強していたとき、メタタグに対する私の理解はこの一文だけでした。 <メ...