diff --git a/learn/Basic/010_array_manipulation/README.md b/learn/Basic/010_array_manipulation/README.md index 31db7f9e..43db3231 100644 --- a/learn/Basic/010_array_manipulation/README.md +++ b/learn/Basic/010_array_manipulation/README.md @@ -214,6 +214,58 @@ console.log(food); // expected output: ['Pizza', 'Spaghetti', 'Burger'] Lihat contoh lainnya di [splice.js](splice.js) +### 10. Find + +Method `.find()` akan **mengembalikan elemen pertama** yang memenuhi kondisi yang diberikan. Jika tidak ada elemen yang memenuhi kondisi, akan mengembalikan `undefined`. + +```js +const numbers = [10, 20, 30, 40, 50]; + +const found = numbers.find((number) => number > 25); + +console.log(found); // 30 +``` + +- `callback`: fungsi yang dijalankan pada setiap elemen +- Mengembalikan **elemen** (bukan index), atau `undefined` jika tidak ditemukan + +Berbeda dengan `.findIndex()` yang mengembalikan **index**, `.find()` mengembalikan **nilai elemen** itu sendiri. + +Lihat contoh lainnya di [find.js](find.js) + +### 11. Some + +Method `.some()` akan mengecek apakah **minimal satu elemen** memenuhi kondisi. Mengembalikan `true` atau `false`. + +```js +const numbers = [1, 2, 3, 4, 5]; + +const hasNegative = numbers.some((number) => number < 0); + +console.log(hasNegative); // false +``` + +- `.some()` → `true` jika **minimal satu** elemen memenuhi kondisi +- `.every()` → `true` jika **semua** elemen memenuhi kondisi + +Lihat contoh lainnya di [some.js](some.js) + +### 12. Includes + +Method `.includes()` digunakan untuk mengecek apakah array mengandung **elemen tertentu**. Mengembalikan `true` jika ditemukan, `false` jika tidak. + +```js +const fruits = ["apel", "mangga", "jeruk"]; + +console.log(fruits.includes("mangga")); // true +console.log(fruits.includes("durian")); // false +``` + +- `.includes()` menggunakan **strict equality** (`===`), jadi type coercion tidak dilakukan +- Bisa menerima parameter kedua `fromIndex` untuk menentukan posisi awal pencarian + +Lihat contoh lainnya di [includes.js](includes.js) + [](../009_array) [](../011_object) diff --git a/learn/Basic/010_array_manipulation/find.js b/learn/Basic/010_array_manipulation/find.js new file mode 100644 index 00000000..aa098e43 --- /dev/null +++ b/learn/Basic/010_array_manipulation/find.js @@ -0,0 +1,27 @@ +// Method .find() akan mengembalikan elemen pertama yang memenuhi kondisi. +// Jika tidak ada elemen yang memenuhi kondisi, akan mengembalikan undefined. + +const numbers = [10, 20, 30, 40, 50]; + +// Mencari elemen pertama yang lebih besar dari 25 +const found = numbers.find((number) => number > 25); + +console.log(found); // expected output: 30 + +// Mencari elemen pertama yang lebih besar dari 100 (tidak ada) +const notFound = numbers.find((number) => number > 100); + +console.log(notFound); // expected output: undefined + +// Contoh dengan array of objects +const students = [ + { name: "Andi", score: 85 }, + { name: "Budi", score: 72 }, + { name: "Citra", score: 90 }, + { name: "Dewi", score: 65 }, +]; + +// Mencari siswa pertama yang nilainya di atas 80 +const topStudent = students.find((student) => student.score > 80); + +console.log(topStudent); // expected output: { name: "Andi", score: 85 } diff --git a/learn/Basic/010_array_manipulation/includes.js b/learn/Basic/010_array_manipulation/includes.js new file mode 100644 index 00000000..bf083d87 --- /dev/null +++ b/learn/Basic/010_array_manipulation/includes.js @@ -0,0 +1,25 @@ +// Method .includes() digunakan untuk mengecek apakah array mengandung elemen tertentu. +// Mengembalikan true jika elemen ditemukan, false jika tidak. +// Berbeda dengan .indexOf() yang mengembalikan index, .includes() mengembalikan boolean. + +const fruits = ["apel", "mangga", "jeruk", "pisang"]; + +// Mengecek apakah "mangga" ada di dalam array +console.log(fruits.includes("mangga")); // expected output: true + +// Mengecek apakah "durian" ada di dalam array +console.log(fruits.includes("durian")); // expected output: false + +// .includes() juga bisa menerima parameter kedua yaitu posisi awal pencarian (fromIndex) +const numbers = [1, 2, 3, 4, 5, 3]; + +// Mencari angka 3 dimulai dari index 4 +console.log(numbers.includes(3, 4)); // expected output: true (menemukan 3 di index 5) + +// Mencari angka 3 dimulai dari index 6 +console.log(numbers.includes(3, 6)); // expected output: false (sudah melewati semua 3) + +// Catatan penting: .includes() menggunakan strict equality (===) +// Artinya, type coercion TIDAK dilakukan +console.log([1, 2, 3].includes("1")); // expected output: false (string "1" !== number 1) +console.log([1, 2, 3].includes(1)); // expected output: true diff --git a/learn/Basic/010_array_manipulation/some.js b/learn/Basic/010_array_manipulation/some.js new file mode 100644 index 00000000..32986ee5 --- /dev/null +++ b/learn/Basic/010_array_manipulation/some.js @@ -0,0 +1,33 @@ +// Method .some() akan mengecek apakah minimal satu elemen memenuhi kondisi. +// Mengembalikan true jika ada minimal satu elemen yang memenuhi kondisi, +// dan false jika tidak ada satupun yang memenuhi. + +const numbers = [1, 2, 3, 4, 5]; + +// Mengecek apakah ada elemen yang lebih besar dari 3 +const hasGreaterThanThree = numbers.some((number) => number > 3); + +console.log(hasGreaterThanThree); // expected output: true + +// Mengecek apakah ada elemen yang negatif +const hasNegative = numbers.some((number) => number < 0); + +console.log(hasNegative); // expected output: false + +// Contoh dengan array of objects +const products = [ + { name: "Laptop", price: 15000000, inStock: true }, + { name: "Mouse", price: 150000, inStock: false }, + { name: "Keyboard", price: 500000, inStock: true }, +]; + +// Mengecek apakah ada produk yang sedang kosong (out of stock) +const hasOutOfStock = products.some((product) => !product.inStock); + +console.log(hasOutOfStock); // expected output: true + +// Perbedaan .some() dengan .every(): +// .some() -> true jika MINIMAL SATU elemen memenuhi kondisi +// .every() -> true jika SEMUA elemen memenuhi kondisi +const allInStock = products.every((product) => product.inStock); +console.log(allInStock); // expected output: false