Anda di halaman 1dari 17

Nama : Ilham Ferdiansyah

Kelas : Malam C

Nim : 191351157

(FUNCTION)

No. 1

Tulislah sebuah function dengan nama teriak() yang mengembalikan nilai “Halo Humanika!” yang
kemudian dapat ditampilkan di console.

Jawaban

Source code

//illham ferdiansyah
//malam C
//191351157

//memanggil fungsi
function Teriak(){
console.log("hello humanika")
}

//memanggil fungsi
Teriak() //maka akan menghasilkan
Hasil

No. 2

Tulislah sebuah function dengan nama kalikan() yang mengembalikan hasil perkalian dua parameter
yang di kirim.

Source

//illham ferdiansyah
//malam C
//191351157
function calculateMultiply(num1_param, num2_param) {
return num1_param * num2_param;
}

var num1 = 12;


var num2 = 4;

var hasilPerkalian = calculateMultiply(num1,num2);


console.log(hasilPerkalian); // Menampilkan angka 30
Hasil

No. 3

Tulislah sebuah function dengan nama introduce() yang memproses paramater yang dikirim menjadi
sebuah kalimat perkenalan seperti berikut: “Nama saya [name], umur saya [age] tahun, alamat saya
di [address], dan saya punya hobby yaitu [hobby]!”

Jawaban

Source code

//illham ferdiansyah
//malam C
//191351157
function processSentence(name_param, age_param, address_param, hobby_param) {
console.log("Nama saya " + name_param + ", umur saya " + age_param + ", alamat saya di " +
address_param + ", dan saya punya hobby yaitu " + hobby_param);
}

var name = "Agus";


var age = 30;
var address = "Jln. Malioboro, Yogjakarta";
var hobby = "gaming";

var fullSentence = processSentence(name,age,address,hobby);


console.log(fullSentence); // Menampilkan "Nama saya Agus, umur saya 30 tahun, alamat saya di
Jln. Malioboro, Yogjakarta, dan saya punya hobby yaitu gaming!"

Hasil
(ARAY)

No. 1

(Range) Buatlah sebuah function dengan nama range() yang menerima dua parameter berupa
number. Function mengembalikan sebuah array yang berisi angka-angka mulai dari angka parameter
pertama hingga angka pada parameter kedua. Jika parameter pertama lebih besar dibandingkan
parameter kedua maka angka-angka tersusun secara menurun (descending). struktur fungsinya
seperti berikut range(startNum, finishNum) {} Jika parameter pertama dan kedua tidak diisi maka
function akan menghasilkan nilai -1

Source code

//Ilham ferdiansyah
// 191355157
//malam c
function range(startNum, finishNum) {
var result = [];//inisialisasi variabel penampungan hasil
if (startNum && finishNum) {//validasi range
if (startNum <= finishNum ) {
for (var i = startNum; i <= finishNum; i++) {
result.push(i)
}
}
else {
for (var i = startNum; i >= finishNum; i--) {
result.push(i)
}
}
} else {
result = -1;//mengembalikan nilai -1 bagi kondisi undefined
}
return result;//mengembalikan hasil
};

console.log(range(1, 10)) //[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]


console.log(range(1)) // -1

Hasil
No. 2

(Range with Step) Pada soal kali ini kamu diminta membuat function rangeWithStep yang mirip
dengan function range di soal sebelumnya namun parameternya ditambah dengan parameter ketiga
yaitu angka step yang menyatakan selisih atau beda dari setiap angka pada array. Jika parameter
pertama lebih besar dibandingkan parameter kedua maka angka-angka tersusun secara menurun
(descending) dengan step sebesar parameter ketiga. Struktur fungsinya seperti berikut : Source code

Source code

function rangeWithStep(startNum, finishNum, step) {


var result = [];//inisialisasi variabel penampungan hasil
if ((typeof startNum == 'undefined') || (typeof finishNum == 'undefined')) {//validasi range
result = -1;//mengembalikan nilai -1 bagi kondisi undefined
}
else if (startNum <= finishNum ){
for (var i = startNum; i <= finishNum; i+=step) {
result.push(i);
}
}
else if (startNum > finishNum ){
for (var i = startNum; i >= finishNum; i-=step) {
result.push(i);
}
}
return result;//mengembalikan hasil
}

console.log(rangeWithStep(1, 10, 2)) // [1, 3, 5, 7, 9]


console.log(rangeWithStep(11, 23, 3)) // [11, 14, 17, 20, 23]
console.log(rangeWithStep(5, 2, 1)) // [5, 4, 3, 2]
console.log(rangeWithStep(29, 2, 4)) // [29, 25, 21, 17, 13, 9, 5]
Hasil

No. 3

(Sum of Range) Kali ini kamu akan menjumlahkan sebuah range (Deret) yang diperoleh dari function
range di soal-soal sebelumnya. Kamu boleh menggunakan function range dan rangeWithStep pada
soal sebelumnya untuk menjalankan soal ini. Buatlah sebuah function dengan nama sum() yang
menerima tiga parameter yaitu angka awal deret, angka akhir deret, dan beda jarak (step). Function
akan mengembalikan nilai jumlah (sum) dari deret angka. contohnya sum(1,10,1) akan menghasilkan
nilai 55. ATURAN: Jika parameter ke-3 tidak diisi maka stepnya adalah 1

Source code

//ilham ferdiansyah
//191351157
//malam C
//tukar posisi
var larger = Math.max(startNum, finishNum);
var smaller = Math.min(startNum, finishNum);
if (step < 0) {
for (var i = larger; i >= smaller; i+=step){
rangeArray.push(i);
}
} else {
for (var i = smaller; i <= larger; i+=step){
rangeArray.push(i);
}
}
return rangeArray.length > 1 ? rangeArray.reduce((a, b) => a + b) : rangeArray[0]
}

console.log(sum(1,10)) // 55
console.log(sum(5, 50, 2)) // 621
console.log(sum(15,10)) // 75
console.log(sum(20, 10, 2)) // 90
console.log(sum(1)) // 1
console.log(sum()) // 0
Hasil

No. 4

(Array Multidimensi) Sering kali data yang diterima dari database adalah array yang multidimensi
(array di dalam array). Sebagai developer, tugas kita adalah mengolah data tersebut agar dapat
menampilkan informasi yang diinginkan. Buatlah sebuah fungsi dengan nama dataHandling dengan
sebuah parameter untuk menerima argumen. Argumen yang akan diterima adalah sebuah array
yang berisi beberapa array sejumlah n. Contoh input dapat dilihat dibawah:

Source code

//illham ferdiansyah
//malam C
//191351157
function dataHandling(bioArr){
for(var i = 0; i < bioArr.length; i++){
console.log("Nomor ID: " + bioArr[i][0]);
console.log("Nama Lengkap: " + bioArr[i][1]);
console.log("TTL: " + bioArr[i][2] + " " + bioArr[i][3]);
console.log("Hobi: " + bioArr[i][4]);
console.log("");
}
}

var input = [
["0001", "Roman Alamsyah", "Bandar Lampung", "21/05/1989", "Membaca"],
["0002", "Dika Sembiring", "Medan", "10/10/1992", "Bermain Gitar"],
["0003", "Winona", "Ambon", "25/12/1965", "Memasak"],
["0004", "Bintang Senjaya", "Martapura", "6/4/1970", "Berkebun"]
]

console.log(dataHandling(input));
Hasil

No. 5

(Balik Kata) Kamu telah mempelajari beberapa method yang dimiliki oleh String dan Array. String
sebetulnya adalah sebuah array karena kita dapat mengakses karakter karakter pada sebuah string
layaknya mengakses elemen pada array. Buatlah sebuah function balikKata() yang menerima sebuah
parameter berupa string dan mengembalikan kebalikan dari string tersebut.

Source code

//illham ferdiansyah
//malam C
//191351157
function balikKata(kata) {
return kata.split("").reverse().join("");
}

// TEST CASES
console.log(balikKata('kasur rusak')); // kasuR rusaK
console.log(balikKata('Informatika')); // akitamrifnI
console.log(balikKata('haji Ijah')); // hajI ijaH
console.log(balikKata('racecar')); // racecar
console.log(balikKata('i am Humanikers')); // srekinamuH ma I
Hasil

No. 6

(Metode Array) Array pada JavaScript memiliki sekumpulan built-in function yang digunakan untuk
mempermudah developer untuk mengolah data di dalamnya. Beberapa fungsi yang sering
digunakan antara lain join, split, slice, splice, dan sort. Kerjakanlah tantangan ini untuk memperkuat
pengertian kamu tentang built-in function tersebut.

Source code

//illham ferdiansyah
//malam C
//191351157
function dataHandling2(bioArr){
const newBioArr = bioArr;
newBioArr.splice(1,2,"Roman Alamsyah Elsharawy", "Provinsi Bandar Lampung");
newBioArr.splice(4,1, "Pria", "SMA Internasional Metro");

const name = newBioArr[1];


const month = newBioArr[3].split("/")[1]
const dateArr = newBioArr[3].split("/")
dateArr.sort(function(a, b) {
return b-a
});
const dateString = newBioArr[3].split("/").join("-")

switch(parseInt(month)){
case 01:
monthName = 'Januari';
break;
case 02:
monthName = 'Febuari';
break;
case 03:
monthName = 'Maret';
break;
case 04:
monthName = 'April';
break;
case 05:
monthName = 'Mei';
break;
case 06:
monthName = 'Juni';
break;
case 07:
monthName = 'Juli';
break;
case 08:
monthName = 'Agustus';
break;
case 09:
monthName = 'September';
break;
case 10:
monthName = 'Oktober';
break;
case 11:
monthName = 'November';
break;
case 12:
monthName = 'Desember';
break;
default:
monthName = "Tidak ada bulan yang lebih dari 12";
break;
};

console.log(newBioArr);
console.log(monthName);
console.log(dateArr);
console.log(dateString);
console.log(name);
}

var input = ["0001", "Roman Alamsyah ", "Bandar Lampung", "21/05/1989", "Membaca"];
dataHandling2(input);

Hasil
(Object Literal)

No.1

(Array to Object) Buatlah function dengan nama arrayToObject() yang menerima sebuah parameter
berupa array multidimensi. Dalam array tersebut berisi value berupa First Name, Last Name, Gender,
dan Birthyear. Data di dalam array dimensi tersebut ingin kita ubah ke dalam bentuk Object dengan
key bernama : firstName, lastName, gender, dan age. Untuk key age ambillah selisih tahun yang
ditulis di data dengan tahun sekarang. Jika tahun tidak terdefinisi atau tahunnya lebih besar
dibandingkan dengan tahun sekarang maka kembalikan nilai : “Invalid birth year”.

Source code

console.log("Ilham 191351157")
console.log("<<<<<<<<<<<input>>>>>>>>>>>")
function arrayToObject(arr) {
var newobj = {}
newobj[1+". "+arr[0].slice(0,2).join(" ")]=looping(arr[0])
newobj[2+". "+arr[1].slice(0,2).join(" ")]=looping(arr[1])
return newobj
}

function looping(arra){
var lahir = (arra.slice(3,4).join(""))
var now = new Date()
var thisYear = now.getFullYear() //2020 (tahun sekarang)
var newobj = {
firstname : (arra.slice(0,1).join("")),
lastname : (arra.slice(1,2).join("")),
gender : (arra.slice(2,3).join("")),
age : thisYear-lahir
}
if (lahir >= thisYear || lahir == 0){
newobj.age="invalid Birth Year"
}
return newobj
}
var input = [["nino", "Mbayu", "male", 1992], ["vigo", "indra", "male", 1985]]
console.log(arrayToObject(input))
// Driver Code
var people = [ ["jojon", "joni", "male", 1975], ["ijah", "ida", "female"] ]
console.log("<<<People >>>>>>>")
console.log(arrayToObject(people))
var people2 = [ ["mifath", "akmal", "male", 1980], ["hesti", "ayu", "female", 2023] ]
console.log("<<<People 2 >>>>>>>")
console.log(arrayToObject(people2))

Hasil
No. 2

(Shopping Time) Diberikan sebuah function shoppingTime(memberId, money) yang menerima dua
parameter berupa string dan number. Parameter pertama merupakan memberIddan parameter ke-2
merupakan value uang (money) yang dibawa oleh member tersebut. Toko X sedang melakukan SALE
untuk beberapa barang, yaitu: • Sepatu brand Stacattu seharga 1500000 • Baju brand Zoro seharga
500000 • Baju brand H&N seharga 250000 • Sweater brand Uniklooh seharga 175000 • Casing
Handphone seharga 50000 • Buatlah function yang akan mengembalikan sebuah object dimana
object tersebut berisikan informasi memberId, money, listPurchased dan changeMoney. • Jika
memberId kosong maka tampilkan “Mohon maaf, toko X hanya berlaku untuk member saja” • Jika
uang yang dimiliki kurang dari 50000 maka tampilkan “Mohon maaf, uang tidak cukup” • Member
yang berbelanja di toko X akan membeli barang yang paling mahal terlebih dahulu dan akan
membeli barang-barang yang sedang SALE masing-masing 1 jika uang yang dimilikinya masih cukup

Source code

//ilhamferdiansyah
//191351157
//malamC
function shoppingTime(memberId, money){
var goodsInSale = { barang : ['sepatu stacattu', 'baju zoro', 'baju h&n', 'sweater uniklooh', 'casing
handphone'], harga : [1500000, 500000, 250000, 175000, 50000]};

var shopLog = {memberId: memberId,


money: money,
listPurchased: [],
changeMoney: 0
}
// sort harga barang dari termahal ke termurah
var objekharga = (sortArraysInSync(goodsInSale.barang,goodsInSale.harga))
// sort harga barang dari termurah ke termahal

if (memberId === ''){


return 'Mohon maaf, toko x hanya berlaku untuk member saja';
} else if (arguments.length === 0){
return 'Mohon maaf, toko x hanya berlaku untuk member saja';
} else if (memberId !== ''){
if (money < 50000){
return 'Mohon maaf, uang tidak cukup';
} else {
//perulangan belanja
var beli= 0
var duit = money
for (i=0;i<=objekharga.y.length;i++){

if(duit>=objekharga.y[i]){
shopLog.listPurchased[beli]=objekharga.x[i]
duit=duit-objekharga.y[i]
beli++
shopLog.changeMoney=duit
}
}
}
}
return shopLog;
}

function sortArraysInSync (x, y) {


let arr = [];

let l1 = Math.min(y.length, x.length);


let l2 = Math.min(y.length, x.length);

while (l1--) arr.push({ name: x[l1], score: y[l1]});

arr.sort(function(a, b) {
return b.score - a.score; });

while (l2--) {
x[l2] = arr[l2].name;
y[l2] = arr[l2].score;
}
var harga ={x,y
}
return harga
}

// TEST CASES
console.log(shoppingTime('1820RzKrnWn08', 2475000));
console.log(shoppingTime('82Ku8Ma742', 170000));
console.log(shoppingTime('', 2475000)); console.log(shoppingTime('234JdhweRxa53', 15000));
console.log(shoppingTime());

Hasil

No. 3

(Naik Angkot) Diberikan function naikAngkot(listPenumpang) yang akan menerima satu parameter
berupa array dua dimensi. Function akan me-return array of object. Diberikan sebuah rute, dari A –
F. Penumpang diwajibkan membayar Rp2000 setiap melewati satu rute

Source code
//ilhamferdiansyah
//191351157
//malamC
function naikAngkot(arrPenumpang) {
rute = ['A', 'B', 'C', 'D', 'E', 'F'];
var angkot = [{},{}];
var i=0;
var asal = '';
var tujuan = '';

for (i; i<arrPenumpang.length; i++) {


var j = 0;

for (j; j<arrPenumpang[i].length; j++) {


switch (j) {
case 0: {
angkot[i].penumpang = arrPenumpang[i][j];
break;
} case 1: {
angkot[i].naikDari = arrPenumpang[i][j];
angkot[i].tujuan = arrPenumpang[i][j+1];
break;
} case 2: {
asal = arrPenumpang[i][j-1];
tujuan = arrPenumpang[i][j];
var jarak = 0;
for (var k=0; k<rute.length; k++) {
if (rute[k] === asal) {
for (var l=k+1; l<rute.length; l++) {
jarak += 1;
if (rute[l] === tujuan) {
var bayar = jarak * 2000;
angkot[i].bayar = bayar;
}
}
}
}
break;
}
}
}
}
return angkot;
}
console.log(naikAngkot([['Dimitri', 'B', 'F'], ['Icha', 'A', 'B']]));

hasil

Anda mungkin juga menyukai