Javascript2 - zbirka zadataka Flashcards

1
Q

Otvorite http://nsoft.ba/js-tecaj-b/ i kopirajte JSON podatke o proizvodima u varijablu json za daljnje korištenje. Ispišite u konzolu prosjek ID-jeva proizvoda, te ima li više parnih ili neparnih ID-jeva

A
var json = { 
"products":{ 
"76":{ 
"id":"76", "name":"Kruh", "price":"KM 1.65", "qty":"4", "ingredients":["sol","brasno","voda","kvasac"] 
}, 
"14":{ 
"id":"14", "name":"Mlijeko", "price":"KM 1.43", "qty":"12", "ingredients":["kravlje mlijeko"] 
}, 
"48":{ 
"id":"48", "name":"Secer", "price":"KM 2.64", "qty":"1", "ingredients":["secerna trska"] 
}, 
"89":{ 
"id":"89", "name":"Brasno5kg", "price":"KM 6.90", "qty":"1", "ingredients":["psenica","sjemenke"] 
}, 
"5":{ 
"id":"5", "name":"Argeta", "price":"KM 1.33", "qty":"3", "ingredients":["piletina","sol","zacini"] 
} 
} 
}; 
function ids(){ 
var x = json.products; var niz = [], sum = 0, odd=0, even=0, count=0; 
   for (var i in x){       if(parseInt(i)%2 === 0){          even++;       }       else{          odd++;       }      sum += parseInt(i);      count++;    } 
   if(even > odd){       console.log("Vise je parnih");    }    else{ 
   console.log("vise je neparnih");    }    console.log(sum);  } 
ids();
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Ispišite u konzolu ime proizvoda koji ima najmanje sastojaka. Ispišite prosječnu količinu svih proizvoda.

A
function ingredients(){   var x = json.products,    sum=0,    avg=0,    count=0,    max = {}; 
for (var i in x ){    if (!max.ingredients) {     max = x[i];    }     if(x[i].ingredients.length > max.ingredients.length){     max = x[i];    }    sum += parseInt(x[i].qty);    count++;   } 
avg=parseFloat(sum/count).toFixed(2); console.log(max.name); console.log(avg); 
} ingredients();
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Nađite ukupnu vrijednost inventara svih proizvoda na stanju. Ako ona prelazi 50 KM, ispišite količinu najskupljeg proizvoda, a ako ne, ispišite količinu najjeftinijeg proizvoda.

A
function inventory() { 
var products = json.products,    sum = 0,    minQty = 0,     maxQty = 0,    price = 0,    minPrice = 0,    maxPrice = 0,    qty = 0,    minRef = null,    maxRef = null; 
for(var i in products) {    price = parseFloat(products[i].price.split(' ')[1]);    qty = parseInt(products[i].qty);    sum += price * qty; 

if(price > maxPrice){ maxQty = qty; } if(minPrice === 0) { minQty = qty; minPrice = price; } if( price < minPrice ){ minQty = qty; } } if(sum > 50 ){ console.log(‘Kolicina najjefitnijeg: ‘ + minQty); }else{ console.log(‘Kolicina najskupljeg ‘ + maxQty); } } inventory();

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

Napravite klasu „Product“, koja sadrži svojstva name (string), price (number), currency (string), qty (number). Napravite javne metode „buy()“ i „sell()“ koje će povećavati/smanjivati količinu za 2.

A
function Product(name, price, currency, qty) {   this.name = name;   this.price = price;   this.currency = currency;   this.qty = qty;   var changePrice = function(price, action){    if(action === 'buy') {     price += price * 0.1;    }     else{     price -= price * 0.1;    }    return price;   }   this.changePrice = function (price, action) {    return changePrice(price, action);   } } 
Product.prototype.buy = function ( callback ) {   this.qty += 1;   console.log('price = ' + this.price);   return callback(this.price, 'buy'); } Product.prototype.sell = function ( callback ) {   this.qty -= 1;   return callback(this.price, 'sell'); }
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Metode „buy()“ i „sell()“ trebaju imati callback na metodu „changePrice()“, koja treba pozvati istoimenu privatnu metodu koja će povećati cijenu za 10% kad se proizvodu smanji dostupna količina, i obratno, smanjiti ju za 10% kad se količina poveća. (Urađeno iznad!) Instancirajte jedan proizvoljan objekt, podesite mu cijenu na 10 i promijenite cijenu pozivom na „buy()“ i „sell()“.

A

var jana = new Product(‘Jana’, 10, ‘KM’, 100); console.log(‘Prije buy’ + jana.price);

jana. price = jana.buy(jana.changePrice); console.log(‘Poslije buy ‘ + jana.price);
jana. price = jana.sell(jana.changePrice); console.log(‘Poslije sell ‘ + jana.price);

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

Instancirajte objekte klase „Product“ za svaki proizvod definiran u varijabli json. Zamijenite količine najjefitinijem i najskupljem objektu proizvoda. U prototype klase „Product“ dodajte metode „getName()“, „getPrice()“, „getCurrency()“ i „getQty()“.

A
var kruh = new Product('Kruh', 1.65, 'KM', 4); var mlijeko = new Product('Mlijeko', 1.43, 'KM', 12); var secer = new Product('Secer', 2.64, 'KM', 1); var brasno = new Product('Brasno', 6.90, 'KM', 1); var argeta = new Product('Argeta', 1.33, 'KM', 3); var tmp = 0; 
tmp = argeta.qty; argeta.qty = brasno.qty; brasno.qty = tmp; 
Product.prototype.getName = function () {    return this.name; } 
Product.prototype.getPrice = function () {   return this.price; } 
Product.prototype.getCurrency = function () {   return this.currency; } 
Product.prototype.getQty = function () {   return this.qty; }
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q
Zadan je objekt: 
var putovanje = { 
putovanje1 : { 
grad: "London",cijena_putovanja : "580€", 
trajanje_putovanja : "130min", 
polazak : "1. svibanj 2015.", 
povratak : "10. svibanj 2015.", 
osiguran_smjestaj : "da", 
organizator : "Crno jaje" 
} , 
putovanje2 : { 
grad: "Pariz", 
cijena_putovanja : "600€", 
trajanje_putovanja : "105min", 
polazak : "15. svibanj 2015.", 
povratak : "22. svibanj 2015.", 
osiguran_smjestaj : "da", 
organizator : "Crno jaje" 
}, 
putovanje3 : { 
grad: "Torino", 
cijena_putovanja : "120€", 
trajanje_putovanja : "40min", 
polazak : "14. travanj 2015.", 
povratak : "16. travanj 2015.", 
osiguran_smjestaj : "da", 
organizator : "Trivago" 
},
putovanje4 : { 
grad: "London", 
cijena_putovanja : "150€", 
trajanje_putovanja : "130min", 
polazak : "1. svibanj 2015.", 
povratak : "10. svibanj 2015.", 
osiguran_smjestaj : "ne", 
organizator : "Crno jaje" 
}, 
putovanje5 : { 
grad: "Munchen", 
cijena_putovanja : "100€", 
trajanje_putovanja : "80min", 
polazak : "1. svibanj 2015.", 
povratak : "10. svibanj 2015.", 
osiguran_smjestaj : "ne", 
organizator : "Trivago" 
} 
}; 
Ispisati sva putovanja koja organizira Crno jaje, te ispisati broj putovanja koja organizira Trivago.
A

//

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

Ispisati sva putovanja koja imaju organiziran smještaj.

A

//

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

Sortirati putovanja po duljini njihovog trajanja (polazak i povratak). Ispisati sva putovanja koja imaju isto trajanje putovanja (polazak i povratak).

A

//

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

Napraviti novi property koji će se zvati po vašem izboru te mu dodijeliti cijenu putovanja u KM. (1€ = 1.94KM).

A

//

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

Sortirati putovanja od jeftinijeg prema skupljem.

A

//

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

Napraviti metodu koja će preračunati trajanje putovanja iz minuta u sate i minute. Zatim sortirati putovanja prema potrebnom vremenu leta.

A

//

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

Napraviti metodu „odgodi“, koja će odgoditi polazak putovanja za 1 dan. Zatim pozvati jedno putovanje i odgoditi njegov polazak, te ispisati rezultat.

A

//

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

Izbrisati nanovo dodavane property-e, te ispisati staro-novo stanje.

A

//

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

Napišite funkciju za asinkroni dohvat podataka sa servera, te dohvatite JSON s “http://jsbin.com/hugafagiwe/2.js” i preko callbacka pozovite obradu podataka, ukoliko je zahtjev uspješno izvršen.

A

//

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

Ispišite starost svakog CD-a te ukupnu prosječnu starost svih CD-ova.

A

//

17
Q

Ispišite nazive CD-ova kronološki poredane.

A

//

18
Q

Ispišite one zemlje koje se ponavljaju na više od 3 CD-a.

A

//

19
Q

Ispišite najskuplji i najjeftiniji CD.

A

//

20
Q

Ispišite imena autora kronološki poredane.

A

//

21
Q

Napišite funkciju za asinkroni dohvat podataka sa servera. Dohvatite JSON s “http://jsbin.com/funimefupo.js” i preko callbacka pozovite obradu podataka. Ako nećete raditi u jsbinu, kopirajte JSON.

A

//

22
Q

Ispišite nazive filmova kronološki poredane.

A

//

23
Q

Ispišite prosječnu starost filmova.

A

//

24
Q

Ispišite nazive glumaca koji se ponavljaju u više filmova.

A

//

25
Q

Ispišite za svaki jezik u koliko različitih filmova se koristi.

A

//

26
Q

Definirajte klasu „Movie“ koja će sadržati naziv, prosječnu ocjenu i broj glasova.

A

//

27
Q

Dodajte joj metodu „vote“ koja će primati ocjene 1-10 i koja će preračunati prosječnu ocjenu.

A

//

28
Q

Instancirajte objekte za svaki film iz JSON-a i glasajte za pojedini film i ispišite novu prosječnu ocjenu.

A

//

29
Q

Dodati funkciju „playMovie()“. Ona treba puštati film pretvarajući trajanje iz minuta u sekunde (na početku ispiše samo film taj i taj počeo je u x:y). Kada film završi potrebno je pozvati callback funkciju „onMovieFinish()“ koja bi ispisala koji film je završio i kada. (Koristiti Date() i setTimeout().)

A

//

30
Q
Zadan je JSON objekt:  
var jsonObj = {  
 "phones":[  
     { "id":6144,  
  "name":"Sony Xperia Z2",  
  "manufacturer":"Sony",  
  "ram":"3 GB",  
  "internal_memory":"16 GB",  
  "cpu":"Quad-core 2.3 GHz Krait 400",  
  "back_camera":"20.7 MP",  
  "front_camera":"2.2 MP",  
  "gpu":"Adreno 330",  
  "battery":"3200 mAh", 
"battery_removable":"no",  
  "price":"490 EUR"  
     },  
     { "id":6033,  
  "name":"Samsung Galaxy S5",  
  "manufacturer":"Samsung",  
  "ram":"2 GB",  
  "internal_memory":"32 GB",  
  "cpu":"Quad-core 2.5 GHz Krait 400",  
  "back_camera":"16 MP",  
  "front_camera":"2 MP",  
  "gpu":"Adreno 330",  
  "battery":"2800 mAh",  
  "battery_removable":"yes",  
  "price":"430 EUR"  
     },  
     { "id":5705,  
  "name":"LG Nexus 5",  
  "manufacturer":"LG",  
  "ram":"3 GB",  
  "internal_memory":"16 GB",  
  "cpu":"Quad-core 2.3 GHz Krait 400",  
  "back_camera":"8 MP",  
  "front_camera":"1.3 MP",  
"gpu":"Adreno 330",  
  "battery":"2300 mAh",  
  "battery_removable":"no",  
  "price":"260 EUR"  
     },  
     { "id":6077,  
  "name":"LG G2 mini",  
  "manufacturer":"LG",  
  "ram":"1 GB",  
  "internal_memory":"8 GB",  
  "cpu":"Quad-core 1.2 GHz Cortex-A7",  
  "back_camera":"8 MP",  
  "front_camera":"1.3 MP",  
  "gpu":"Adreno 305",  
  "battery":"2440 mAh",  
  "battery_removable":"yes",  
  "price":"230 EUR"  
     },  
     { "id":5497,  
  "name":"Sony Xperia M",  
  "manufacturer":"Sony",  
  "ram":"1 GB",  
  "internal_memory":"4 GB",  
  "cpu":"Dual-core 1 GHz Krait", 
"back_camera":"5 MP",  
  "front_camera":"VGA",  
  "gpu":"Adreno 305",  
  "battery":"1750 mAh",  
  "battery_removable":"yes",  
  "price":"110 EUR"  
     },  
     { "id":3724,  
  "name":"Samsung Galaxy Ace",  
  "manufacturer":"Samsung",  
  "ram":"512 MB",  
  "internal_memory":"158 MB",  
  "cpu":"800 MHz ARM 11",  
  "back_camera":"5 MP",  
  "front_camera":"no",  
  "gpu":"Adreno 200",  
  "battery":"1350 mAh",  
  "battery_removable":"yes",  
  "price":"90 EUR"  
     }  
 ]  
  };  
Ispisati naziv najskupljeg mobitela.
A

//

31
Q

Ispisati sve mobitele koji imaju uklonjivu bateriju.

A

//

32
Q

Napisati funkciju „changePrice()“ koja omogućava unos nove cijene (od korisnika) i promjenu cijene proslijeđenom mobitelu. Pritom pripaziti da korisnik unese prihvatljivu cijenu (mora se sastojati samo od brojeva i nova cijena smije biti niža ili viša samo za 0% do 20% od stare cijene). Sve dok nova cijena ne prođe provjeru, ispisivati odgovarajuću poruku i tražiti ponovan unos od korisnika. Pri spremanju nove cijene u objekt, na kraj cijene trebate dodati valutu “EUR”. Pozvati funkciju „changePrice()“ i promijeniti cijenu mobitela “Samsung Galaxy S5”.

A

//

33
Q

Napisati funkciju „avgRam()“ koja izračunava prosječnu količinu ram-a mobitela i ispisuje ju u GB i MB.

A

//

34
Q

Napisati funkciju „sortById()“ koja treba poredati mobitele po ID-evima od najmanjeg prema najvecem, zatim ih ispisati.

A

//

35
Q

Napraviti klasu „Smartphone“ koja se sastoji od svojstava: name, manufacturer, internal_memory i price. Instancirati objekte klase Smartphone za svaki mobitel iz zadanog objekta “jsonObj” (to učiniti dinamički, ne samo copy-paste-ati vrijednosti svojstava iz zadanog objekta).

A

//

36
Q

Dodati svojstvo discount, postaviti njegovu vrijednost svim objektima na “0%”.

A

//

37
Q

Dodati metodu „setDiscount“ koja ce preko primljenog parametra povećati discount za 10. Metoda prima i callback na funkciju „printPrice()“ koja ispisuje cijenu sa uračunatim popustom.

A

//