9.1 Spread (açıq operatoru)
JavaScript-də rest
və spread
əməliyyatları massivlər, obyektlər və funksiyalarla işləmək üçün geniş imkanlar təqdim edir. Bu əməliyyatlar kodu sadələşdirir, onu daha aydın və çevik edir. Bu mühazirədə rest və spread əsas konseptlərini, həmçinin onların istifadəsinə dair nümunələri ətraflı müzakirə edəcəyik.
spread (...)
operatoru massivi və obyektləri elementlər gözlənilən yerlərdə "açmağa" imkan verir. Bu, massivlərin və ya obyektlərin kopyalanması, birləşdirilməsi, həmçinin funksiyalara arqumentlərin ötürülməsi zamanı faydalı ola bilər.
Nümunə 1: Massivin kopyalanması
Bu nümunədə copiedArray
originalArray
-ın kopyasıdır.
Burada …
operatoru massivi dəyişənlər siyahısı kimi "açır", []
operatoru isə dəyişənlər dəstini yeni massivdə "bağlayır":
const originalArray = [1, 2, 3];
const copiedArray = [...originalArray];
console.log(copiedArray); // Çap edəcək: [1, 2, 3]
Nümunə 2: Massivlərin birləşdirilməsi
Bu nümunədə iki massiv array1
və array2
bir massivə combinedArray
birləşdirilir.
Burada …
operatoru hər iki massiv dəyişənlər siyahısı kimi açır, []
operatoru isə dəyişənləri yeni massivdə birləşdirir:
const array1 = [1, 2, 3];
const array2 = [4, 5, 6];
const combinedArray = [...array1, ...array2];
console.log(combinedArray); // Çap edəcək: [1, 2, 3, 4, 5, 6]
Nümunə 3: Funksiyaya arqumentlərin ötürülməsi
Bu nümunədə numbers
massiv üç arqumentin sum()
funksiyasına ötürülməsi üçün açılır:
function sum(a, b, c) {
return a + b + c;
}
const numbers = [1, 2, 3];
console.log(sum(...numbers)); // Çap edəcək: 6
Nümunə 4: Obyektin kopyalanması
Bu nümunədə copiedObject
originalObject
-ın kopyasıdır:
const originalObject = { a: 1, b: 2 };
const copiedObject = { ...originalObject };
console.log(copiedObject); // Çap edəcək: { a: 1, b: 2 }
Nümunə 5: Obyektlərin birləşdirilməsi
Bu nümunədə iki obyekt obj1
və obj2
bir obyektə combinedObject
birləşdirilir:
const obj1 = { a: 1, b: 2 };
const obj2 = { c: 3, d: 4 };
const combinedObject = { ...obj1, ...obj2 };
console.log(combinedObject); // Çap edəcək: { a: 1, b: 2, c: 3, d: 4 }
9.2 Rest (qalıq parametr operatoru)
rest (...)
operatoru bir neçə elementi arayda toplamağa imkan verir. Bu xüsusilə dəyişən sayda argument qəbul edən funksiyalarla işləyərkən, eləcə də massivlərin və obyektlərin destrukturizasiyası zamanı faydalıdır.
Misal 1: Funksiyalarda qalıq parametrlər
Bu nümunədə sum()
funksiyası istənilən sayda argument qəbul edərək onları cəmləşdirir:
function sum(...numbers) {
return numbers.reduce((acc, num) => acc + num, 0);
}
console.log(sum(1, 2, 3)); // Çıxış: 6
console.log(sum(4, 5, 6, 7)); // Çıxış: 22
Misal 2: Rest ilə massivlərin destrukturizasiyası
Bu nümunədə massivdəki ilk iki element first
və second
dəyişənlərinə təyin olunur, qalan elementlər isə rest
adlı bir massivi təşkil edir:
const [first, second, ...rest] = [1, 2, 3, 4, 5];
console.log(first); // Çıxış: 1
console.log(second); // Çıxış: 2
console.log(rest); // Çıxış: [3, 4, 5]
Misal 3: Rest ilə obyektlərin destrukturizasiyası
Bu nümunədə a
və b
xüsusiyyətləri ayrıca dəyişənlərə çıxarılır, qalan xüsusiyyətlər isə rest
adlı obyektə yığılır:
const { a, b, ...rest } = { a: 1, b: 2, c: 3, d: 4 };
console.log(a); // Çıxış: 1
console.log(b); // Çıxış: 2
console.log(rest); // Çıxış: { c: 3, d: 4 }
9.3 Real tapşırıqlarda rest və spread istifadəsi
Nümunə 1: Şərtlə massivlərin birləşdirilməsi
Bu nümunədə istifadəçi parametrləri userSettings
standart parametrləri defaultSettings
üstələyir:
const defaultSettings = { theme: 'dark', showNotifications: true };
const userSettings = { showNotifications: false, fontSize: 14 };
const settings = { ...defaultSettings, ...userSettings };
console.log(settings); // Çıxış: { theme: 'dark', showNotifications: false, fontSize: 14 }
Nümunə 2: Massivin hissələrə bölünməsi
Bu nümunədə numbers
massivi ilk iki elementi çıxarmaqla iki hissəyə bölünür:
const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
const [first, second, ...rest] = numbers;
const firstHalf = rest.slice(0, Math.floor(rest.length / 2));
const secondHalf = rest.slice(Math.floor(rest.length / 2));
console.log(firstHalf); // Çıxış: [3, 4, 5, 6]
console.log(secondHalf); // Çıxış: [7, 8, 9, 10]
GO TO FULL VERSION