JavaScript2 - vjezbe sa predavanja Flashcards
Učitati 8 brojeva.
Ispisati četvrti uneseni broj te zbroj prvog i petog unesenog broja.
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]));
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).
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]);
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.
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));
Učitavati brojeve u niz sve dok im zbroj ne prijeđe 150.
Ispisati niz sortiran od najvećeg prema najmanjem.
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);
Zatražiti od korisnika unos nekog stringa. Ispisati koliko ima samoglasnika u tom stringu.
Ispisati prvih 5 slova unesenog stringa.
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);
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.
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));
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.
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
atražiti od korisnika unos 10 brojeva u niz. Izbaciti iz postojećeg niza zadnja tri broja i dodati broj 25 na kraj niza.
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);
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)
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!
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)
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
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.
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 && num < 100) && numbers.indexOf(num) === -1) { // Dodaj broj u niz numbers.push(num); } }
console.log(‘Uneseni brojevi: ‘ + numbers);
Napraviti matricu 3x3.
Popuniti ju sa brojevima 1-9.
Ispisati prvi redak matrice.
Ispisati cijelu matricu (svaki broj u novom redu).
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]); } }
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.
// 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);
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 + ‘.’);
var kuca = { brojKatova: 2, brojKvadrata: 200, bojaFasade: 'zuta' };
console.log(‘Imam kucu na ‘ + kuca.brojKatova + ‘ sa ‘ + kuca.brojKvadrata + ‘. Boja fasade je ‘ + kuca.bojaFasade + ‘.’);
Prepraviti prvi zadatak korištenjem drugog načina definiranja property-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 + ‘.’);
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.’);
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.’);
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.
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]);
}
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.
var racunalo = {
hdd: 500,
ram: 8
};
console.log(racunalo);
delete racunalo.hdd;
console.log(racunalo);
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);
var knjiga = { autor: 'Mato Lovrak', ime: 'Vlak u snijegu', godina: 1976 };
for(prop in knjiga){
console.log(prop + ‘ - ‘ + knjiga[prop]);
}
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.
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);
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’.
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]); } }
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.
// 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) && 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) && 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’);
}
}
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.
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());
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.
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);
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()
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);
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.
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));
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.
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);
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.
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 && birthDay <= day)) { age = year - birthYear; } else if (birthMonth > month || (birthMonth === month && birthDay > day)) { age = year - birthYear - 1; } this.age = age; };
console. log(person);
person. setAge();
console. log(person);
** JS2 - 5. Predavanje - Objects I - Domaća zadaća - Zadatak 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. - 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. - 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. - 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().
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’));
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.
function test1(callback) {
console.log(‘Ovo je prva funkcija’);
callback();
}
function test2() { console.log('Ovo je druga funkcija'); }
test1(test2);
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.
function test1(a, callback) { callback(a); }
function test2(b) { console.log("Proslijedili smo: " + b); }
test1(2, test2);
Uraditi prethodni zadatak koristeći novi način
deklariranja callback-a.
function test1(a, callback) { callback(a); }
test1(2, function (b) {
console.log(“Proslijedili smo: “ + b);
});
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.
var arr = [];
function insertValues() { arr.push(2); arr.push(5); console.log(arr); }
setTimeout(insertValues, 3000);
console.log(arr);
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.
setTimeout(function() {
console.log(‘Pozvana na novi nacin’);
}, 2000);
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.
setTimeout(function() {
console.log(‘Prvi poziv’);
}, 3000);
setTimeout(function() {
console.log(‘Drugi poziv’);
}, 5000);
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’.
function f1(callback) { setTimeout(callback, 5000); }
f1(function () {
console.log(‘Napokon ispis’);
});
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.
var osoba = {};
function func(callback) { setTimeout(callback, 1000); }
func(function() {
osoba. ime = ‘Ivan’;
osoba. prezime = ‘Ivanovic’;
console.log(osoba);
});
console.log(osoba);
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()
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);
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.
<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 && xhttp.status == 200) { callback(xhttp); } }; xhttp.open("GET", "ajax_info.txt", true); xhttp.send(); }
function parseData(data) { document.getElementById("demo").innerHTML = data.responseText; }
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.
// rjesenje na desktopu
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
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 && 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); }