Javascript2 - zbirka zadataka Flashcards
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
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();
Ispišite u konzolu ime proizvoda koji ima najmanje sastojaka. Ispišite prosječnu količinu svih proizvoda.
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();
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.
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();
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.
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'); }
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()“.
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);
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()“.
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; }
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.
//
Ispisati sva putovanja koja imaju organiziran smještaj.
//
Sortirati putovanja po duljini njihovog trajanja (polazak i povratak). Ispisati sva putovanja koja imaju isto trajanje putovanja (polazak i povratak).
//
Napraviti novi property koji će se zvati po vašem izboru te mu dodijeliti cijenu putovanja u KM. (1€ = 1.94KM).
//
Sortirati putovanja od jeftinijeg prema skupljem.
//
Napraviti metodu koja će preračunati trajanje putovanja iz minuta u sate i minute. Zatim sortirati putovanja prema potrebnom vremenu leta.
//
Napraviti metodu „odgodi“, koja će odgoditi polazak putovanja za 1 dan. Zatim pozvati jedno putovanje i odgoditi njegov polazak, te ispisati rezultat.
//
Izbrisati nanovo dodavane property-e, te ispisati staro-novo stanje.
//
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.
//