スナックストーリー:
スナックが入ったバスケットがあるとします:
const snacks = ['apple', 'banana', 'chocolate'];
さあ、これらのスナックを友達と共有したいと思います。ただし、かご全体を与える代わりに、おやつを取り出して 1 つずつ与えます:
console.log(...snacks); // Output: apple banana chocolate
... (スプレッド) 演算子は、バスケットからスナックを取り出してテーブルに広げるようなものです。友達が個別に受け取れるようになりました!
一方、友達がさらに多くのスナックを持ってきた場合は、... (休憩) 演算子を使用して、それらをすべて 1 つの大きなバスケットに集めることができます:
function collectSnacks(...moreSnacks) { console.log(moreSnacks); } collectSnacks('cookie', 'chips', 'juice'); // Output: ['cookie', 'chips', 'juice']
ここで、... オペレーターはすべてのスナックを新しいバスケットに集めます。これが残り演算子の仕組みです!
JavaScript を初めて使用する場合は、スプレッド演算子とレスト演算子という 2 つの特別な構文要素に遭遇したことがあるかもしれません。どちらも 3 つの点 (...) で同じように見えますが、使用方法は異なります。簡単な例で詳しく見てみましょう!
1.スプレッド演算子とは?
スプレッド演算子 (...) は、配列またはオブジェクトを個々の要素に展開するために使用されます。これは、配列またはオブジェクトをそのコンポーネントに解凍するようなものです。
例: 配列の展開
数値の配列があり、それらを個別に関数に渡したいとします。
const numbers = [1, 2, 3]; console.log(...numbers); // Output: 1 2 3
スプレッド演算子を使用して配列要素を分散できます!
例: 配列の結合
2 つの配列があり、それらをマージしたい場合は、スプレッド演算子を使用すると簡単になります:
const array1 = [1, 2, 3]; const array2 = [4, 5, 6]; const mergedArray = [...array1, ...array2]; console.log(mergedArray); // Output: [1, 2, 3, 4, 5, 6]
配列 1 と配列 2 のすべての要素を 1 つの新しい配列にレイアウトするようなものです。
例: オブジェクトのコピー
スプレッド演算子をオブジェクトで使用することもできます:
const user = { name: "Ahmed", age: 25 }; const updatedUser = { ...user, location: "Bengaluru" }; console.log(updatedUser); // Output: { name: "Ahmed", age: 25, location: "Bengaluru" }
ここでは、ユーザー オブジェクトからプロパティをコピーし、新しいプロパティの場所を追加しました。
例: 残りのパラメータを持つ関数
任意の数の引数を取る関数を作成していると想像してください:
function addNumbers(...nums) { return nums.reduce((sum, current) => sum current, 0); } console.log(addNumbers(1, 2, 3, 4)); // Output: 10
この場合、残りの演算子 ...nums はすべての引数を配列に収集し、複数の値の操作を容易にします。
例: REST による構造化
配列を分割するときに残りの演算子を使用することもできます:
const [first, ...rest] = [1, 2, 3, 4]; console.log(first); // Output: 1 console.log(rest); // Output: [2, 3, 4]
ここでは、まず配列の最初の要素を取得し、残りの要素を新しい配列に収集します。
結論
スプレッド演算子とレスト演算子は、JavaScript の強力で多用途なツールです。要約すると:
これら 2 つの概念を理解していただければ幸いです。これにより、JavaScript コードがより簡潔になり、読みやすくなります。
コーディングを楽しんでください:)
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3