console.log(`======================SPREADING OPERATOR=======================`)
/* Spreading operator dituliskan dgn three consecutive dots (...)
fitru baru ES6 ini digunakan utk membentangkan nilai array atau lebih
tepatnya iterable objcect meenjadi beberapa element.
Contoh: */
//Sebelum menggunakan spread operator
const favorites = ["Mie", "Rice", "Fried Chicken"];
console.log(favorites);
//Menggunakan spread operator (...)
console.log(...favorites);
//menggunakan spread perator
//Sama seperti kita menuliskan kode seperti ini:
console.log(favorites[0], favorites[1], favorites[2], favorites[3] = false);
/* Spread operator ini cocok sekali digunakan sebagai nilai parameter
pada variadic functions, seperti console.log() atau Math.max(). */
// Math.max() -> fungsinya mencari nilai terbesar
const numbers = [12, 32, 21, 11, 4];
// Sama seperti kita menuliskan
// console.log(Math.max(numbers[0], numbers[1], numbers[2], numbers[3])
console.log(`
>> Mencari nilai terbesar (Math.max) dgn spread operator <<`)
console.log(Math.max(...numbers));
/*Spread operator dapat digunakan untuk menggabungkan dua buah array
dalam objek array baru. Jika tidak menggunakan spread operator ini
maka hasilnya seperti ini: */
console.log(`
>> Menggabungkan dua buah array dalam objek array baru <<
sebelum menggunakan spread operator:`)
const others = ['Bakso', 'Kwetiaw', 'Sop Ayam'];
const allFavorites = [favorites, others];
console.log(allFavorites);
/* Alih-alih menggabungkan nilainya, variabel allFavorite menjadi objek
array baru yang menampung dua array di dalamnya. Nah lantas bagaimana
jika kita mencoba menggunakan spread operator? */
console.log(`
setelah menggunakan spread operator: `)
const semuaFavorites = [...favorites, ...others];
console.log(semuaFavorites);
console.log(`==========================REST PARAMETER=========================`)
/* Rest parameter juga dituliskan menggunakan three consecutive dots (...).
Dengan rest parameter, kita dapat menggabungkan beberapa elemen menjadi
satu array. Tentu teknik ini sangat bermanfaat ketika kita hendak
membuat sebuah variadic function. */
console.log(`contoh variadic function yang berfungsi untuk menjumlahkan
seluruh nilai argument fungsi yang diberikan:`)
function sum(...numbers){
var result = 0;
for(let number of numbers){
result += number
}
return result;
}
console.log(sum(1,2,3,4,5));
/* Rest parameter juga dapat digunakan pada array destructuring,
di mana kita dapat mengelompokkan nilai-nilai array yang terdestruksi
pada variabel dalam bentuk array yang lain. */
console.log(`Rest Parameter pada array destructing`)
const friendNames = ['Nadia', 'Nisvi', 'Lia', 'Dina', 'Jitni'];
const [temanSMA, temanSMA2, ...temanSMP] = friendNames;
console.log(temanSMA, temanSMA2);
console.log(temanSMP);