Краткое руководство по использованию оператора распространения в JavaScript.
Когда мы следуем коду JavaScript, мы можем видеть, что иногда есть 3 точки (…). Что это за три точки (…). Это оператор распространения в Java Script. В этой статье я собираюсь обсудить оператор распространения в JavaScript.
С новыми функциями ES6 оператор распространения является одной из них. Давайте обсудим, что это такое? Почему?, Варианты использования и т. Д. С соответствующими примерами.
По данным MDN
Синтаксис Spread позволяет расширять итерацию, такую как выражение массива или строка, в местах, где ожидается ноль или более аргументов (для вызовов функций) или элементов (для литералов массива), или выражение объекта, которое должно быть расширено в местах, где ноль или более Ожидаются пары ключ-значение (для объектных литералов). "источник"
Что делает оператор спреда?
Можно распределить элементы в массиве или строке как отдельные аргументы или элементы и распределить пары ключ-значение в объектах. Давайте обсудим с примерами.
Где мы это используем?
Оператор распространения используется в
- вызовы функций
- литералы или строки массива
- объектные литералы
1. вызов функций
Сначала мы пишем функцию, чтобы найти сумму двух чисел.
const numbers = [6,8]; function findSum(num1, num2){ console.log(num1+num2); //14 } findSum(numbers[0], numbers[1]);
Результатом приведенного выше кода является 14 . теперь добавьте оператора распространения. Мы можем добавить оператор распространения для передачи чисел без использования чисел [0], чисел [1].
const numbers = [6,8]; function findSum(num1, num2){ console.log(num1+num2); //14 } findSum(…numbers);
Выход,
14
… числа передает элементы массива в функцию. Здесь findSum () принимает только первый и второй элементы массива. давайте попробуем улучшить код.
const numbers = [6,8,3]; function findSum(...arg){ console.log(arg); //[ 6, 8, 3 ] console.log(arg[0] + arg[1]); //14 } findSum(...numbers);
Выход,
[ 6, 8, 3 ] 14
Здесь к параметрам функции также добавлен оператор findSum ().
2. массивы литералов или строк
Здесь у меня есть четное и нечетное arrat. Я хочу добавить их в единый массив. Попытайся..
const odds = [1,3,5]; const even = [2,4,6]; const numbers = [odds, even] console.log(numbers); //[ [ 1, 3, 5 ], [ 2, 4, 6 ] ]
Выход,
[ [ 1, 3, 5 ], [ 2, 4, 6 ] ]
Но здесь я не мог получить ожидаемого результата, а здесь не было ни одного массива без вложенного массива. Однако используйте concatintor в Array.prototype.concat ()…
const odds = [1,3,5]; const even = [2,4,6]; const numbers = odds.concat(even) console.log(numbers); //[ 1, 3, 5, 2, 4, 6 ]
Выход,
[ 1, 3, 5, 2, 4, 6 ]
Теперь попробуйте добавить оператора спреда.
const odds = [1,3,5]; const even = [2,4,6]; const numbers = […odds, …even] console.log(numbers);
Выход,
[ 1, 3, 5, 2, 4, 6 ]
Здесь у нас есть единый массив, который содержит все эти элементы, как нечетные, так и четные, вместе взятые. И concat (), и оператор распространения выполняются успешно.
Теперь сравните и сопоставьте push () и оператор распространения.
let odds = [1,3,5]; let updatedOdd = odds updatedOdd.push(7) console.log(updatedOdd); //[1,3,5,7] console.log(odds); //[1,3,5,7] /* using spread syntax */ let even = [2,4,6]; let updatedEven = even updatedEven = […even, 8]; console.log(updatedEven); //[2,4,6] console.log(even); //[2,4,6,8]
Согласно приведенному выше коду, когда мы пытаемся добавить 7 к updatedOdd, исходный массив (odds) тоже изменено. Но оператор распространения не влияет на исходный массив (evens), когда мы пытаемся добавить 8 к updatedEven.
3. литералы объекта
В разделе Rest / Spread Properties для предложения ECMAScript (ES2018) добавлены свойства распространения для литералов объектов. Он копирует собственные перечислимые свойства из предоставленного объекта в новый объект. "источник"
Объектные литералы с оператором распространения используются для расширения существующих объектов новыми объектами.
studentBio={ name: “Jenny”, age: “20” } studentCollege={ collegeName: “x”, collegeLevel: 4 } const studentDetails = {…studentBio, …studentCollege}; console.log(studentDetails)
Выход,
{ name: ‘Jenny’, age: ‘20’, collegeName: ‘x’, collegeLevel: 4 }
Здесь все перечисляемые детали копируются в объединенный объект. studentDetails является копией studentBio и studentCollege. .
Заключение
В этой статье рассматривается основная тема оператора распространения в JavaScript. Здесь обсуждали, что такое оператор распространения, где он используется. Затем обсудите поведение оператора распространения с фрагментами кода реализации.