JavaScript2 - vjezbe sa predavanja Flashcards

1
Q

Učitati 8 brojeva.

Ispisati četvrti uneseni broj te zbroj prvog i petog unesenog broja.

A

var arr = [];

for(var i = 0; i < 8; i++){
arr[i] = parseInt(prompt(‘Unesite broj:’));
//ILI: arr.push(parseInt(prompt(‘Unesite broj:’)));
}
console.log(‘Cetvrti uneseni broj je ‘ + arr[3]);
console.log(‘Zbroj prvog i petog broja je ‘ + (arr[0]+arr[4]));

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Deklarirati niz i popuniti ga cijelim brojevima. Ispisati prvi, srednji i zadnji element niza. (kod mora raditi za bilo koji niz, neovisno o broju elemenata).

A

var arr = [],
len = parseInt(prompt(‘Unesite duljinu niza:’)),
midIndex,
mid;

for(var i = 0; i < len; i++){
  arr[i] = parseInt(prompt('Unesite broj:'));
  //ILI: arr.push(parseInt(prompt('Unesite broj:')));
}
midIndex = parseInt((len-1)/2);
if(len % 2 === 0){
  mid = arr[midIndex] + ' i ' + (arr[midIndex]+1);
} else {
	mid = arr[midIndex];
}

console. log(‘Prvi uneseni broj ‘ + arr[0]);
console. log(‘Srednji uneseni broj/evi ‘ + mid);
console. log(‘Zadnji uneseni broj ‘ + arr[arr.length-1]);

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Deklarirati prazan niz i popuniti ga sa 50 cijelih brojeva (petljom).
Nakon što se niz popuni u drugoj petlji uraditi računicu prosječne vrijednosti članova niza.

A
var arr = [],
    sum = 0;
for(var i = 1; i <= 50; i++){
  arr.push(i);
}
for(i = 0; i < arr.length; i++){
  sum += arr[i];
}
console.log('Prosjecna vrijednost iznosi ' + (sum/arr.length));
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Učitavati brojeve u niz sve dok im zbroj ne prijeđe 150.

Ispisati niz sortiran od najvećeg prema najmanjem.

A
var arr = [],
  	sum = 0,
    temp;
while (sum <= 150) {
  var num = parseInt(prompt('Unesite broj:'));
  arr.push(num);
  sum += num;
}
for (var i = 0; i < arr.length; i++) {
	for (var j = i+1; j < arr.length; j++) {
    if(arr[i] < arr[j]) {
    	temp = arr[i];
    	arr[i] = arr[j];
    	arr[j] = temp;
    }
  }
}
console.log('Niz poredan od najvećeg ka najmanjem je ', arr);
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Zatražiti od korisnika unos nekog stringa. Ispisati koliko ima samoglasnika u tom stringu.
Ispisati prvih 5 slova unesenog stringa.

A
var text = prompt('Unesite tekst'),
    newText = '',
    vowelCounter = 0,
    letterCounter = 0;

for(var i = 0; i < text.length; i ++) {
if(text[i] === ‘a’ || text[i] === ‘e’ || text[i] === ‘i’ || text[i] === ‘o’ || text[i] === ‘u’ || text[i] === ‘A’ || text[i] === ‘E’ || text[i] === ‘I’ || text[i] === ‘O’ || text[i] === ‘U’) {
vowelCounter++;
}
}
console.log(‘Broj samoglasnika: ‘ + vowelCounter);

for(var i = 0; i < text.length; i ++) {
if(letterCounter < 5 && ((text[i] >= ‘a’ && text[i] <= ‘z’) || (text[i] >= ‘A’ && text[i] <= ‘Z’))) {
newText += text[i];
letterCounter++;
}
}
console.log(‘Prvih 5 slova unesenog teksta: ‘ + newText);

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Deklarirati niz koji se sastoji od 5 riječi.

Napisati funkciju koja vraća najdulju i najkraću riječ iz niza te ispisati rezultat u glavnom programu.

A
function wordLength(words) {
  var shortest = words[0],
      longest = words[0];
  for (var i = 0; i < words.length; i++) {
    if (shortest.length > words[i].length) {
      shortest = words[i];
    }
    if (longest.length < words[i].length) {
      longest = words[i];
    }
  }
  return ('Najkraća rijec je "' + shortest + '", a najdulja "' + longest + '".');
}
var textArray = ['Programming', 'we', 'love'];
console.log(wordLength(textArray));
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Učitati niz od 10 brojeva. Ispisati najveći i najmanji član niza, zatim poredati članove niza po veličini - od najvećeg prema najmanjem i ispisati ga, potom od najmanjeg prema najvećem i njega također ispisati.

A
let arr = [1, 34, 45, 56, 102, -2, -512, 0, 12];
let smallestNumber = arr[0];
let biggestNumber = arr[0];

function smallestNumberFunc(a) {

for(let i = 0; i < arr.length; i++) {
  if(arr[i] < smallestNumber) {
    smallestNumber = arr[i];

}
}

return smallestNumber;
}

function biggestNumberFunc(a) {

for(let i = 0; i < arr.length; i++) {
  if(arr[i] > biggestNumber) {
    biggestNumber = arr[i];
  }
}
  return biggestNumber;
}
function sortArrayAsc(a){
  for(let i = 0; i < arr.length; i++) {
  for(let j = 0; j < i; j++) {
    if(arr[i] < arr[j]) {
      let temp = arr[i];
      arr[i] = arr[j];
      arr[j] = temp;
    }
  }
}
 return arr;
}
function sortArrayDesc(a) {
  for(let i = 0; i < arr.length; i++) {
  for(let j = 0; j < i; j++) {
    if(arr[i] > arr[j]) {
      let temp = arr[i];
      arr[i] = arr[j];
      arr[j] = temp;
    }
  }
}
return arr;
}

console. log(‘Smallest number ‘ + smallestNumberFunc(arr));
console. log(‘Biggest number ‘ + biggestNumberFunc(arr));
console. log(‘Sorted array ascending ‘ + sortArrayAsc(arr));
console. log(‘Sorted array decending ‘ + sortArrayDesc(arr));

// code by admir

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

atražiti od korisnika unos 10 brojeva u niz. Izbaciti iz postojećeg niza zadnja tri broja i dodati broj 25 na kraj niza.

A

var arr = [];

for(var i = 0; i < 10; i++) {
arr.push(parseInt(prompt(‘Unesite ‘ + (i+1) + ‘. broj:’)));
}
// OBJAŠNJENJE:
// .splice(startni index, broj elemenata koje će ukloniti počevši od startnog indexa, element kojega će dodati na startni index)
arr.splice(arr.length-3, 3, 25);

// Ukoliko želimo spremiti izbačene elemente u drugi niz, napisati ćemo ovako:
// var arr2 = arr.splice(arr.length-3, 3, 25);
console.log(arr);
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Zadan je niz cijena kupljenih proizvoda:
var prices = [‘KM 1.00’, ‘KM 1.85’, ‘KM 19.99’];
Zbrojiti ukupan iznos koji treba platiti.
(metoda slice)

A
var prices = ['KM 1.00', 'KM 1.85', 'KM 19.99'],
    sum = 0;
for(var i = 0; i < prices.length; i++) {
  sum += parseFloat(prices[i].slice(3));
  // Mogli smo napisati i:
  // sum += parseFloat(prices[i].slice(0, prices[i].length-3));
}
console.log('Iznos za platiti: ' + sum);
// OBJAŠNJENJE:
// .slice(startni index, završni index);

// SLICE ne mijenja originalni niz, za razliku od SPLICE-a!

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Zadan je niz cijena kupljenih proizvoda:
var prices = [‘KM 1.00’, ‘KM 1.85’, ‘KM 19.99’];
Zbrojiti ukupan iznos koji treba platiti.
(metoda split)

A
var prices = ['KM 1.00', 'KM 1.85', 'KM 19.99'],
    sum = 0,
    price;
for(var i = 0; i < prices.length; i++) {
  price = prices[i].split(' ');
  sum += parseFloat(prices[1]);
}
console.log('Iznos za platiti: ' + sum);
// OBJAŠNJENJE:
// Metoda split()
// .split(uvjet po kojemu splitamo string);

// Ako stavimo .split(‘’), dobit ćemo novi niz sastavljen od svakog znaka kojeg string sadrži, npr.:

// var txt = 'Danas je petak.';
// var splitted = txt.split('');
// console.log(splitted);
// ispis:	['D', 'a', 'n', 'a', 's', ' ', 'j', 'e', ' ', 'p', 'e', 't', 'a', 'k', '.']
// console.log(splitted[2]);
// ispis:	'n'

// SPLIT ne mijenja originalni string

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Zatražite od korisnika unos 5 dvoznamenkastih različitih brojeva u niz.
Pobrinite se da korisnik mora unijeti točno 5 brojeva. Unos istih brojeva te onih koji nisu dvoznamenkasti ne smije biti dopušten.

A
var numbers = [],
	num;
// Ponavljaj dok niz ne bude sadržavao točno 5 elemenata
while (numbers.length < 5) {
	num = parseInt(prompt('Unesite dvoznamenkasti broj'));
    // Ako se broj nalazi u intervalu 10-99 (tj. ako je dvoznamenkast)
	// i ako ne postoji već u nizu 'numbers'
    if ((num > 9 &amp;&amp; num < 100) &amp;&amp; numbers.indexOf(num) === -1) {
    	// Dodaj broj u niz
    	numbers.push(num);
    }
}

console.log(‘Uneseni brojevi: ‘ + numbers);

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Napraviti matricu 3x3.
Popuniti ju sa brojevima 1-9.
Ispisati prvi redak matrice.
Ispisati cijelu matricu (svaki broj u novom redu).

A
var matrix = [],
    row = [],
    elem = 1;
for(var i = 0; i < 3; i++) {
  row = [];
  for(var j = 0; j < 3; j++) {
    row.push(elem++);
  }
  matrix.push(row);
}
console.log('Prvi redak matrice: ', matrix[0]);
console.log('Svaki broj u novom redu:');
for(var i = 0; i < 3; i++) {
  for(var j = 0; j < 3; j++) {
	console.log(matrix[i][j]);
  }
}
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Napraviti matricu 3x3. Prvi redak neka se sastoji od brojeva 2, 4 i 6, drugi redak od istih brojeva na kvadrat, treći od istih brojeva na treću potenciju.

A

// Problem rijesen sa for petljom

let matrix = [];
let elem = 2;

for(let i = 0; i < 3; i++) {
let row = [];
matrix.push(row);
}

for(let j = 0; j < 3; j++) {
  for(let z = 0; z < 3; z++) {
    if(j === 0) 
      matrix[j][z] = elem;
      elem+=2;
    if (j == 1)
      matrix[j][z] = Math.pow(matrix[0][z],2);
    if (j == 2)
      matrix[j][z] = Math.pow(matrix[0][z],3);
  }
}

// Problem rijesen bez for petlje

// // prvi red 
// matrix[0][0] = 2;
// matrix[0][1] = 4;
// matrix[0][2] = 6;
// // drugi red na kvadrat 
// matrix[1][0] = Math.pow(matrix[0][0],2);
// matrix[1][1] = Math.pow(matrix[0][1],2);
// matrix[1][2] = Math.pow(matrix[0][2],2);
// // treci red na trecu
// matrix[2][0] = Math.pow(matrix[0][0],3);
// matrix[2][1] = Math.pow(matrix[0][1],3);
// matrix[2][2] = Math.pow(matrix[0][2],3);
  // citava matrica
console.log(matrix);
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Deklarirati objekt kuća.
Deklarirati property-e: brojKatova, brojKvadrata, bojaFasade i pridijeliti im proizvoljne vrijednosti.
Ispisati property-e na sljedeći način: console.log(‘Imam kuću na ‘ + broj katova + ‘ sa ‘ + broj kvadrata + ‘. Boja fasade je ‘ + boja fasade + ‘.’);

A
var kuca = {
	brojKatova: 2,
  brojKvadrata: 200,
  bojaFasade: 'zuta'
};

console.log(‘Imam kucu na ‘ + kuca.brojKatova + ‘ sa ‘ + kuca.brojKvadrata + ‘. Boja fasade je ‘ + kuca.bojaFasade + ‘.’);

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Prepraviti prvi zadatak korištenjem drugog načina definiranja property-a.

A

var kuca = {};

kuca. brojKatova = 2;
kuca. brojKvadrata = 200;
kuca. bojaFasade = ‘zuta’;

console.log(‘Imam kucu na ‘ + kuca.brojKatova + ‘ sa ‘ + kuca.brojKvadrata + ‘. Boja fasade je ‘ + kuca.bojaFasade + ‘.’);

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Deklarirati objekt osoba.
Deklarirati property-e: ime, prezime, brojGodina. Koristiti treći način definiranja property-a. Ispisati property-e na sljedeći način:
console.log(‘Ja sam ‘ + ime + ‘, prezime mi je ‘ + prezime + ’. Tek mi je ‘ + broj godina + ’ godina.’);

A
var osoba = {};
osoba['ime'] = 'Ana';
osoba['prezime'] = 'Anic';
osoba['godine'] = 20;

console.log(‘Ja sam ‘ + osoba[‘ime’] + ‘, prezime mi je ‘ + osoba[‘prezime’] + ‘. Tek mi je ‘ + osoba[‘godine’] + ‘ godina.’);

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Deklarirati objekt auto.
Pomoću obične for petlje dodati 5 property-a koji počinju nazivom vlasnik…, (ne smije biti vlasnik0).
Dodijeliti im proizvoljne vrijednosti.

A
var auto = {},
    imena = ['Ante', 'Mate', 'Nikola', 'Josip', 'Ivan'];
for(var i = 0; i < 5; i++){
  auto['vlasnik' + (i+1)] = imena[i];
}

for(prop in auto){
console.log(prop + ‘ : ‘ + auto[prop]);
}

18
Q

Kreirati objekt racunalo.
Dodati mu property-e hdd i ram te im dodijeliti neke numeričke vrijednosti.
Ispisati objekat, zatim izbrisati property hdd te ponovno ispisati objekt.

A

var racunalo = {
hdd: 500,
ram: 8
};

console.log(racunalo);
delete racunalo.hdd;
console.log(racunalo);

19
Q

Kreirati objekt knjiga.
Dodijeliti mu property-e autor, ime, godina.
Koristeći for … in petlju ispisati property-e na sljedeći način:
console.log(property + ‘ - ‘ + vrijednost);

A
var knjiga = {
  autor: 'Mato Lovrak',
  ime: 'Vlak u snijegu',
  godina: 1976
};

for(prop in knjiga){
console.log(prop + ‘ - ‘ + knjiga[prop]);
}

20
Q

Kreirati objekt vozilo. Dodati mu property-e tip, brojPutnika, maxBrojPutnika i dodijeliti im proizvoljne vrijednosti.
Napisati funkciju za dodavanje putnika u vozilo.
Funkcija prima objekt i željeni broj putnika za dodavanje.
U funkciji je potrebno provjeriti je li moguće dodati toliko putnika. Ako jest, dodati ih i ispisati trenutni broj putnika. Ako nije, ispisati poruku o grešci.
U glavnom programu zatražiti unos broja putnika za dodavanje i poslati ga funkciji.

A
var vozilo = {
    tip: 'auto',
    brojPutnika: 3,
    maxBrojPutnika: 5
};
function dodajPutnike(obj, broj) {
	if ((obj.brojPutnika + broj) <= obj.maxBrojPutnika) {
    	obj.brojPutnika += broj;
        console.log('Putnici uspješno dodani! Trenutni broj putnika: ' + obj.brojPutnika);
    } else {
        console.log('Greška! Nije moguće dodati ' + broj + ' putnika.');
    }
}
var brojPutnika = parseInt(prompt('Unesite broj putnika za dodavanje:'));
dodajPutnike(vozilo, brojPutnika);
21
Q

Zadan je objekat movie : https://jsfiddle.net/9canzdvo/

Ispisati sve property-e objekta u formatu (svojstvo - vrijednost). Potrebno je ispisati sve glumce čije prezime počinje slovom ‘c’.

A
var movie = {
    name: 'The Godfather',
    duration: 175,
    rating: 9.2,
    actors: ['Marlon Brando', 'Al Pacino', 'James Caan', 'Richard Castellano']
};

for (var prop in movie) {
console.log(prop + ‘ - ‘ + movie[prop]);
}

for (var i = 0; i < movie.actors.length; i++) {
	var lastName = movie.actors[i].split(' ')[1];
if (lastName.toLowerCase().slice(0, 1) === 'c') {
	console.log(movie.actors[i]);
} }
22
Q

JS2 - 3. Predavanje - Objects I - Domaća zadaća - Zadatak 1 **
Deklarirati prazan objekt “osoba”. Zatražiti od korisnika unos vrijednosti za sljedeća 3
svojstva objekta: jmbg, ime i prezime.
Napisati funkciju koja vrši provjeru za ime i prezime - ne smiju biti kraći od 3 znaka i ne smiju sadržavati brojeve te funkciju za JMBG - ne smije sadržavati ništa osim brojeva i mora imati točno 13 brojeva.
Ukoliko provjera nije prošla, funkcija treba ispisati poruku greške i vratiti 0, ukoliko je
provjera prošla, funkcija vraća 1.
Zatražiti od korisnika unos navedenih vrijednosti. Nakon svakog unosa pozvati odgovarajuću funkciju za provjeru
i tek ako je provjera prošla, tada treba dodijeliti unesene vrijednosti svojstvima objekta.

A

// moje rjesenje

let osoba = {};

let inputName = prompt('Enter Your name');
let nameValue = checkName(inputName);
let inputSurname = prompt('Enter Your surname');
let surnameValue = checkSurname(inputSurname);
let inputId = prompt('Enter Your ID');
let idValue = checkID(inputId);

insertValues(nameValue, surnameValue, idValue);

function checkName(name) {
  if(isNaN(name) &amp;&amp; name.length > 3) {
    console.log('Ime je validno ' + ' uneseno ime je ' + name);
    return 1;
  }else {
    console.log('Ime nije validno ' + ' vas unos: ' + name);
    return 0;
  }
}
function checkSurname(surname) {
  if(isNaN(surname) &amp;&amp; surname.length > 3) {
    console.log('Prezime je validno ' + ' uneseno prezime je ' + surname);
    return 1;
  }else {
    console.log('Prezime nije validno ' + ' vas unos: ' + surname);
    return 0;
  }
}
function checkID(id) {
  if(id.length === 13) {
    console.log('Maticni broj validan ' + ' uneseni maticni broj je ' + id);
    return 1;
  }else {
    console.log('Maticni broj nije validan ' + ' vas unos: ' + id);
    return 0;
  }
}

function insertValues (nameCheck, surnameCheck, idCheck) {
if(nameCheck === 1 && surnameCheck === 1 && idCheck === 1) {
osoba.ime = inputName;
osoba.prezime = inputSurname;
osoba.id = inputId;
console.log(‘Uspjesan unos podataka’);
console.log(‘Vasi podaci: ‘);
console.log(‘Ime ‘ + osoba.ime);
console.log(‘Prezime ‘ + osoba.prezime);
console.log(‘Maticni broj ‘ + osoba.id);
}else {
console.log(‘Greska pri unosu podataka’);
}

}

23
Q

Deklarirati objekt auto sa property-em stanje.
Deklarirati unutar objekta i dvije metode vozi() i stani() koje će mijenjati property stanje i vraćati novu vrijednost property-a stanje.
Ispisati stanje vozila na početku, te nakon poziva svake metode.

A
var auto = {
  stanje: 'pocetno',
  vozi: function () {
    auto.stanje = 'vozi';
    return auto.stanje;
  },
  stani: function () {
    auto.stanje = 'stoji';
    return auto.stanje;
  }
};

console. log(auto.stanje);
console. log(auto.vozi());
console. log(auto.stani());

24
Q

Deklarirati objekt time sa property-em seconds. Property-u dodijeliti neku numeričku vrijednost.
Objektu dodati metodu convertToMin() koja će preračunati sekunde u minute i sekunde.
Metoda treba objektu dodati novi property minutes, u njega pohraniti broj minuta te, sukladno tome, ažurirati broj sekundi pohranjenih u property-u seconds.
Pozvati metodu.

A
var time = {
  seconds: 112
};

time.convertToMin = function () {
time.minutes = parseInt(time.seconds / 60);
time.seconds = time.seconds % 60;
};

console. log(time.seconds);
time. convertToMin();
console. log(time.minutes + ‘:’ + time.seconds);

// moje rjesenje 
let time = {
  seconds: 360,
  convertToMin: function() {
    time.minutes = Math.floor(time.seconds / 60);
    time.seconds = time.seconds - (time.minutes * 60);
  }
}
  console.log(time.seconds);
  time.convertToMin();
  console.log(time.minutes);
  console.log(time.seconds);
25
Q

Deklarirati objekt test koji ima svojstva: ostvareniBodovi, maxBodovi i ocjena, pridijeliti im neke vrijednosti (postaviti ocjenu na nulu za početak). Dodati metodu koja računa i pohranjuje ocjenu s obzirom na iznos ostvarenih i maksimalnih bodova za taj test.

Hint: Math.round()

A
var test = {
  ostvareni_bodovi: 85,
  max_bodovi: 100,
  ocjena: 0,
  izracunaj_ocjenu: function() {
    this.ocjena = Math.round((this.ostvareni_bodovi / this.max_bodovi) * 5);
  }
};

console. log(‘Ocjena prije izračuna: ‘ + test.ocjena);
test. izracunaj_ocjenu();
console. log(‘Ocjena nakon izračuna: ‘ + test.ocjena);

26
Q

Deklarirati objekt desert sa svojstvima naziv, vrsta (npr. kolač, torta, palačinka…), brojKomada i tezina u gramima (svakog komada) te popuniti proizvoljnim vrijednostima.

Dodati metodu pojedi() koja smanjuje broj komada za 1. Dodati i metodu preracunaj() koja prima težinu komada u gramima i broj komada te preračunava težinu iz grama u kilograme i vraća dobiveni rezultat.

A
var dessert = {
  name: 'cheesecake',
  type: 'cake',
  pcsNum: 12,
  pieceWeight: 120,
  eat: function() {
    this.pcsNum--;
  },
  calculate: function(weight, pcs) {
    var kg = parseInt((weight * pcs) / 1000);
    var gr = parseInt((weight * pcs) % 1000);
    return kg + ' kg i ' + gr + ' gr';
  }
};

console. log(‘Ukupna tezina: ‘ + dessert.calculate(dessert.pieceWeight, dessert.pcsNum));
dessert. eat();
console. log(‘Ukupna tezina: ‘ + dessert.calculate(dessert.pieceWeight, dessert.pcsNum));

27
Q

Zadan je objekt ‘toplist’ (https://jsfiddle.net/mapjme31/).
Objektu dodati metodu getLengthInSeconds() koja prima duljinu pjesme u formatu ‘mm:ss’ (format kao kod length property-a objekta toplist).
Metoda treba pretvoriti duljinu u sekunde i vratiti rezultat.
Dodati i metodu getLongestSong() koja treba pronaći i vratiti najdulju pjesmu na top listi (iskoristiti metodu getLengthInSeconds()). (koristiti ključnu riječ this)
U glavnom programu, koristeći metode, ispisati ime najdulje pjesme.

A
var toplist = {
  songs: [{
    title: 'Numb',
    band: 'Linkin Park',
    year: 2003,
    length: '3:08',
    listed: '11th'
  }, {
    title: 'Boulevard Of Broken Dreams',
    band: 'Green Day',
    year: 2004,
    length: '4:20',
    listed: '2nd'
  }, {
    title: 'Bring me to life',
    band: 'Evanescence',
    year: 2003,
    length: '3:57',
    listed: '5th'
  }]
};
toplist.getLengthInSeconds = function (length) {
	var len = length.split(':'),
  		minutes = parseInt(len[0]),
      seconds = parseInt(len[1]);

return ((minutes * 60) + seconds);
};

toplist.getLongestSong = function () {
	var longest = this.songs[0];
  for (var i = 1; i < this.songs.length; i++) {
  	if (this.getLengthInSeconds(longest.length) < this.getLengthInSeconds(this.songs[i].length)) {
    	longest = this.songs[i];
    }
  }
  return longest;
};

console.log(‘Najdulja pjesma je: ‘ + toplist.getLongestSong().title);

28
Q

Kreirati objekt person. Dodijeliti mu property-e name, birthDate (format: dd/mm/yyyy) i pripadajuće vrijednosti.
Kreirati metodu setAge() koja računa dob korisnika prema postojećem property-u birthDate (u obzir uzeti dan i mjesec, kao i godinu rođenja). Metoda dodaje objektu property age i u njega sprema izračunatu dob.

A
var person = {
	name: 'John',
    birthDate: '13/06/1990'
};
person.setAge = function () {
	var age,
    	d = new Date(),
    	day = d.getDate(),
        month = d.getMonth() + 1,
        year = d.getFullYear(),
    	birthDate = this.birthDate.split('/'),
        birthDay = parseInt(birthDate[0]),
        birthMonth = parseInt(birthDate[1]),
        birthYear = parseInt(birthDate[2]);
if (birthMonth < month || (birthMonth === month &amp;&amp; birthDay <= day)) {
	age = year - birthYear;
} else if (birthMonth > month || (birthMonth === month &amp;&amp; birthDay > day)) {
	age = year - birthYear - 1;
}
this.age = age; };

console. log(person);
person. setAge();
console. log(person);

29
Q

** JS2 - 5. Predavanje - Objects I - Domaća zadaća - Zadatak 1 **

  1. Zadan je objekt ‘phonebook’.
    Napraviti funkciju printProperties() za ispis svojstava objekta i njihovih vrijednosti, poslati joj objekt ‘phonebook’ te ispisati za svaki kontakt njegovo ime, broj i grad stanovanja.
  2. Objektu dodati metodu search() koja prima ime kontakta i vraća sve podatke traženog
    kontakta ili 0 ako nije pronađen. U glavnom programu zatražiti od korisnika unos
    imena kontakta, pozvati metodu te ispisati podatke nađenog kontakta ili
    odgovarajuću poruku.
  3. Napisati funkciju addNewContact() za dodavanje novog, petog kontakta u imenik koja
    od korisnika traži unos podataka (ime, prezime, broj telefona i adresu - ulica, broj
    ulice, grad i poštanski broj grada). Pozvati funkciju i dodati novi kontakt.
  4. Napisati funkciju deleteContact() koja prima ime kontakta i briše ga iz imenika.
    Zatražiti od korisnika unos imena korisnika kojega želi ukloniti zatim to i učiniti.
    Ponovno ispisati objekt koristeći funkciju printProperties().
A
var phonebook = {
  contact1: {
    firstName: "Ana",
    lastName: "Anic",
    phoneNumber: "063/111-111",
    address: ['Ante Starcevica', '9', 'Mostar', '88000']
  },
  contact2: {
    firstName: "Ante",
    lastName: "Antic",
    phoneNumber: "063/222-111",
    address: ['Hrvatske mladezi', '7', 'Mostar', '88000']
  },
  contact3: {
    firstName: "Marko",
    lastName: "Markic",
    phoneNumber: "063/222-333",
    address: ['Kraljice Katarine', '10', 'Grude', '88340']
  },
  contact4: {
    firstName: "Hrvoje",
    lastName: "Horvat",
    phoneNumber: "098/2522-111",
    address: ['Jarunska ulica', '12', 'Zagreb', '10000']
  }
};

// rjesenje

function printProperties(arrOfObj) {
for(let i = 0; i < arrOfObj.length; i++) {
console.log(‘______________________________’);
console.log(arrOfObj[i].firstName);
console.log(arrOfObj[i].phoneNumber);
console.log(arrOfObj[i].address[2]);
console.log(‘______________________________’);
}
}

phonebook.search = function(contactName) {
  for(let i = 0; i < this.length; i++) {
    if(contactName === this[i].firstName) {
    return this[i];

}   }

return 0;
}

function addNewContact() {

  let newName = prompt('Enter name');
  let newLastName = prompt('Enter surname');
  let  newNumber = prompt('Enter telephone number');
  let newStreetName  = prompt('Enter Street name');
  let newStreetNumber  = prompt('Enter address number');
  let NewCityName  = prompt('Enter City name');
  let newZipCode  = prompt('Enter zip code');
 phonebook.push({
  firstName: newName,
  lastName: newLastName,
  phoneNumber: newNumber,
  address: [newStreetName, newStreetNumber, NewCityName, newZipCode]
 });

console.log(‘Succesfully added new contact ‘);

}

function deleteContact() {

let contactName = prompt(‘Enter contact name to delete’);

  for(let i = 0; i < phonebook.length; i++){
    if(phonebook[i].firstName === contactName) {
      phonebook.splice(i, 1);
      console.log('Contact sucessfully deleted');
    }
  }

printProperties(phonebook);
}

deleteContact()

// addNewContact();

// printProperties(phonebook);

// console.log(phonebook);

// console.log(phonebook.search(‘Marko’));

30
Q
Deklarirati dvije funkcije.
Prva funkcija treba ispisati:
console.log(‘Ovo je prva funkcija’);
Druga funkcija treba ispisati:
console.log(‘Ovo je druga funkcija’);
Prvoj funkciji proslijediti drugu funkciju kao callback.
A

function test1(callback) {
console.log(‘Ovo je prva funkcija’);
callback();
}

function test2() {
  console.log('Ovo je druga funkcija');
}

test1(test2);

31
Q

Deklarirati dvije funkcije.
Prva funkcija prima 2 parametra: a i callback.
Druga funkcija prima samo jedan parametar: b i ispisuje ga.
Iz prve funkcije pozvati drugu funkciju i proslijediti joj parametar a koji je proslijeđen prvoj funkciji.
Pozvati prvu funkciju, proslijediti joj neki broj i drugu funkciju kao callback.

A
function test1(a, callback) {
  callback(a);
}
function test2(b) {
  console.log("Proslijedili smo: " + b);
}

test1(2, test2);

32
Q

Uraditi prethodni zadatak koristeći novi način

deklariranja callback-a.

A
function test1(a, callback) {
  callback(a);
}

test1(2, function (b) {
console.log(“Proslijedili smo: “ + b);
});

33
Q

Deklarirati niz, zatim deklarirati funkciju koja će umetnuti dvije numeričke vrijednosti u niz.
Koristeći setTimeout funkciju pozvati deklariranu funkciju nakon 3 sekunde.
Ispisati niz nakon poziva funkcije i nakon izvršavanja callback-a.

A

var arr = [];

function insertValues() {
  arr.push(2);
  arr.push(5);
  console.log(arr);
}

setTimeout(insertValues, 3000);
console.log(arr);

34
Q

Funkciji setTimeout proslijediti funkciju, kao prvi parametar, ali na novi način.
Proslijeđena funkcija treba ispisati ‘Pozvana na novi način’.
Funkciju pozvati s odgodom od 2 sekunde.

A

setTimeout(function() {
console.log(‘Pozvana na novi nacin’);
}, 2000);

35
Q

Pozvati setTimeout sa funkcijom koja će ispisati ‘Prvi poziv’ nakon 3 sekunde.
Pozvati opet setTimeout sa funkcijom koja će ispisati ‘Drugi poziv’ nakon 2 sekunde.
Funkcije koje će ispisati navedene stringove napisati na novi način.

A

setTimeout(function() {
console.log(‘Prvi poziv’);
}, 3000);

setTimeout(function() {
console.log(‘Drugi poziv’);
}, 5000);

36
Q

Deklarirati funkciju koja prima jedan parametar (callback).
Unutar deklarirane funkcije koristeći setTimeout, pozvati proslijeđeni callback nakon 5 sekundi.
Pozovite prvu funkciju s tim da joj proslijedite drugu funkciju, deklariranu na novi način.
Druga funkcija treba ispisati ‘Napokon ispis’.

A
function f1(callback) {
  setTimeout(callback, 5000);
}

f1(function () {
console.log(‘Napokon ispis’);
});

37
Q

Napraviti objekt osoba.
Napisati funkciju koja će primati jedan parametar (callback) i koja će nakon 1 sekunde pozvati taj callback. Callback funkcija treba objektu osoba dodati 2 property-a - ime i prezime.
Ispisati objekt osoba prije i poslije izvršavanja callback-a.

A

var osoba = {};

function func(callback) {
  setTimeout(callback, 1000);
}

func(function() {

osoba. ime = ‘Ivan’;
osoba. prezime = ‘Ivanovic’;

console.log(osoba);
});
console.log(osoba);

38
Q

Napisati funkciju koja simulira lotto izvlačenje.
Funkcija nasumično odabire 5 brojeva u rasponu 1-20 svako 1 sec i ispisuje ih korisniku. (1 broj po sekundi)
Treba se pobrinuti da nijedan izvučeni broj ne bude izvučen ponovno.
Hint: Math.floor(Math.random() * 20); and splice()

A
var numbers = [], // niz brojeva 1 - 20 (popuniti će se for petljom)
		drawnNumbers = []; // niz u koji se spremaju izvučeni brojevi
for(var j = 1; j <= 20; j++){
	numbers.push(j);
}
var i = setInterval(function () {
	// izvuci random index i pročitaj iz niza 'numbers' koji broj je spremljen pod tim indexom
	var randomIndex = Math.floor(Math.random() * numbers.length);
  // ispiši dobiveni broj korisniku
  console.log(numbers[randomIndex]);
  // spremi ga u niz izvučenih brojeva
  drawnNumbers.push(numbers[randomIndex]);
  // izbaci taj broj iz glavnog niza 'numbers', tako da više ne može biti izvučen
  numbers.splice(randomIndex, 1);
  // ako je duljlina niza izvučenih brojeva dosegla 5, zaustavi interval
  if(drawnNumbers.length >= 5){
  	clearInterval(i);
  }
}, 1000);
39
Q

Otovoriti:

https://www.w3schools.com/js/tryit.asp?filename=tryjs_ajax_first

Izdvojiti obradu dobivenog text-a u zasebnu funkciju parseData().
Dodati callback parametar postojećoj loadDoc() funkciji te ga pozvati, ukoliko je request uspješno izvršen.
Proslijediti funkciju za obradu XML-a kao callback u loadDoc() funkciju.

A

<div><h2>Let AJAX change this text</h2></div>

Change Content

function loadDoc(callback) {
  var xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
    if (xhttp.readyState == 4 &amp;&amp; xhttp.status == 200) {
      callback(xhttp);
    }
  };
  xhttp.open("GET", "ajax_info.txt", true);
  xhttp.send();
}
function parseData(data) {
	document.getElementById("demo").innerHTML = data.responseText;
}
40
Q

Otvoriti:

https://www.w3schools.com/xml/tryit.asp?filename=tryxml_display_table

Dodati url i callback parametar postojećoj loadDoc() funkciji i pozvati callback, ukoliko je request uspješno izvršen.
Proslijediti url i funkciju za obradu XML-a kao callback u loadDoc() funkciju.
Dodati funkciju koja će izračunati i ispisati prosječnu cijenu CD-a.

A

// rjesenje na desktopu

41
Q

Ispisati tablicu kao u prošlom zadatku koristeći dobiveni
JSON

LINK ZADATKA U GOOGLE DRIVE:

https: //docs.google.com/presentation/d/1XgX4A–BMjLs6-7xnie7a2-0JT2yxMvmOqtzA3nOVC4/edit#slide=id.gf80c31f11_1_5
https: //output.jsbin.com/hugafagiwe/2.js

A

JS Bin

<div>
Get CD info
Get Average Price of CDs
</div>

// ** JS2 - 6. Predavanje - HTTP Request, XML, JSON - Zadatak 3 **

function loadXMLDoc(url, callback) {
    var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
    if (xmlhttp.readyState == 4 &amp;&amp; xmlhttp.status == 200) {
        callback(xmlhttp);
    }
};

xmlhttp.open("GET", url, true);
xmlhttp.send(); }
function createTable(data) {
    var table = "TitleArtist",
        jsonObj = JSON.parse(data.responseText),
        cdArray = jsonObj.CD;
for (i = 0; i < cdArray.length; i++) {
    table += "" + cdArray[i].TITLE + "" + cdArray[i].ARTIST + "";
}
table += "";

document.getElementById('txtCDInfo').innerHTML = table; }
function avgPrice(data) {
    var sum = 0,
        jsonObj = JSON.parse(data.responseText),
        cdArray = jsonObj.CD;
for (i = 0; i < cdArray.length; i++) {
    sum += parseFloat(cdArray[i].PRICE);
}

document.getElementById('txtCDInfo').innerHTML = 'Average price of CDs: ' + (sum / cdArray.length); }