-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathmengelompokkanHewan.js
33 lines (27 loc) · 1.4 KB
/
mengelompokkanHewan.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
/*
Problem
Diberikan sebuah function groupAnimals(arr) yang menerima satu parameter berupa array yang berisi string. Function akan me-return array multidimensi dimana array tersebut berisikan kategori/kelompok array yang dikumpulkan sesuai dengan abjad depannya. Abjad harus berurut dari a-z (jika ada). Untuk kasus ini, anggap saja semua text lowercase.
Contoh jika animals adalah ["ayam", "kucing", "bebek", "bangau", "zebra"]
maka akan menampilkan output: [ [ "ayam" ], [ "bebek", "bangau" ], [ "kucing ], [ "zebra" ] ]
Urutan hewan dalam array setiap pengelompokan huruf tidak penting.
*/
function groupAnimals(animals) {
animals.sort()
var kelompok = [];
var result = [];
for (var i = 0; i < animals.length; i++){
kelompok.push(animals[i]);
if (i === animals.length - 1){//loop berakhir, karena posisi udah di value terakhir
result.push(kelompok);
} else if (animals[i].charAt(0) !== animals[i+1].charAt(0)){ //dipush, krn value sebelahnya udah beda
result.push(kelompok);
kelompok = []; //ngosongin array setelah push dilakukan
}
}
return result;
}
// TEST CASES
console.log(groupAnimals(['cacing', 'ayam', 'kuda', 'anoa', 'kancil']));
// [ ['ayam', 'anoa'], ['cacing'], ['kuda', 'kancil'] ]
console.log(groupAnimals(['cacing', 'ayam', 'kuda', 'anoa', 'kancil', 'unta', 'cicak']));
// [ ['ayam', 'anoa'], ['cacing', 'cicak'], ['kuda'], ['unta'] ]