Array.from()
Korišćenjem metode “from()” možemo od “array-like” ili “iterable” napraviti niz:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
// String u niz Array.from('foo'); //Vraća: ["f", "o", "o"] // Set u niz var s = new Set(['foo', window]); Array.from(s); // Vraća: ["foo", window] // Map u niz var m = new Map([[1, 2], [2, 4], [4, 8]]); Array.from(m); // Vraća: [[1, 2], [2, 4], [4, 8]] // Array like u niz function f() { return Array.from(arguments); } f(1, 2, 3); // Vraća: [1, 2, 3] |
Array.prototype.concat()
Joins two or more arrays, and returns a copy of the joined arrays
Array.prototype.copyWithin()
Copies array elements within the array, to and from specified positions
Array.prototype.every()
Ova metoda se koristi za testiranje niza, proverava da li svi članovi niza zadovoljavaju uslov (uslov u okviru callback funkcije) i vraća boolean vrednost. Metoda ne menja izvorni niz. Callback funkciji metodaprosledijujetri parametra:
- vrednost člana niza
- indeks člana niza
- niz (nad kojim se izvršava metoda)
Pored callback funkcije može (opciono) da se prosledi i argument thisArg, koji definiše na šta će da ukazuje rezervisana reč this u okviru callback funkcije.
1 2 3 |
izvorniNiz.every(function (currentValue, index, array) { //neki uslov }, [thisArg]); |
Primer
1 2 3 4 5 6 7 8 9 10 |
var osobe = [19, 21, 32, 16, 35], istinitost = osobe.every(function(item, index, array){ return item>=18; }); // Vraca True ili False if (istinitost){ console.log("Svi su punoletni"); } else { console.log ("Neko nije punoletan!"); } |
Array.prototype.fill()
Fill the elements in an array with a static value
Array.prototype.filter()
Ova metoda takodje vraća novi niz, ali samo sa elementima koji su prošli test implementiran u izabranoj funkciji. Metoda ne menja izvorni niz. Callback funkciji metodaprosledijujetri parametra:
- vrednost člana niza
- indeks člana niza
- niz (nad kojim se izvršava metoda)
Pored callback funkcije može (opciono) da se prosledi i argument thisArg, koji definiše na šta će da ukazuje rezervisana reč this u okviru callback funkcije.
1 2 3 |
var noviNiz = izvorniNiz.filter(function (currentValue, index, array) { //neki uslov }, [thisArg]); |
Primer
1 2 3 4 5 6 |
function nadjiPozitivne(broj) { return broj>0; } var pozitivniBrojevi = [-109, 12, -5, 38, 44].filter(nadjiPozitivne); console.log(pozitivniBrojevi); //Vraca: [12, 38, 44] |
Primer
1 2 3 4 5 |
var a = [1, 2, 3, 4, 5]; var neparniClanoviNiza = a.filter(function(clan,index) { return index%2===0; }); console.log(neparniClanoviNiza); // Vraca: [1, 3, 5] |
Primer
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
var users = [ { "name": "Pera", "age": 30, }, { "name": "Marija", "age": 20, }, { "name": "Mirko", "age": 19, }, { "name": "Milos", "age": 39, } ]; // Filtriranje vraca: niz objekata koji zadovoljavaju uslov var sortedByAge = users.filter(function(el){ return el.age >= 30; }); //Stampanje imena korisnika iz objekata koji su zadovoljili uslov sortedByAge.forEach(function(element) { console.log(element.name); }); // Vraca: "Pera" "Milos" |
Array.prototype.find()
Ova metoda vraća prvi član niza koji zadovoljava uslov (uslov u okviru callback funkcije). Callback funkciji metoda prosledjuje tri parametra:
- vrednost člana niza
- indeks člana niza
- niz (nad kojim se izvršava metoda)
Pored callback funkcije može (opciono) da se prosledi i argument thisArg, koji definiše na šta će da ukazuje rezervisana reč this u okviru callback funkcije.
1 2 3 |
izvorniNiz.find(function (currentValue, index, array) { //neki uslov }, [thisArg]); |
Primer
1 2 3 4 5 6 7 8 9 10 11 |
var korpa = [ {imeVoca: 'banana', kolicina: 0}, {imeVoca: 'jabuka', kolicina: 2}, {imeVoca: 'visnja', kolicina: 5} ]; function daliImaVoca(vocka) { return vocka.kolicina > 0 ; // Vraca: {imeVoca: 'jabuka', kolicina: 2} } var poslastice = korpa.find(daliImaVoca); console.log("Korpa nije prazna, ima " + poslastice.imeVoca); // Vraca: Korpa nije prazna, ima jabuka |
Metoda findIndex() radi sličnu stvar, stim što umesto prvog elementa koji je zadovoljio uslov, vraća njegov index u nizu.
Array.prototype.findIndex()
Ovaj metod vraća index prvog elementa u nizu koji zadovoljava testnu funkciju, ukoliko nema takvog elementa onda vraća “-1”.
Primer
1 2 3 4 5 |
var array1 = [5, 12, 8, 130, 44]; function findFirstLargeNumber(element) { return element > 13; } console.log(array1.findIndex(findFirstLargeNumber)); // Vraća: 3 |
Array.prototype.forEach()
Ova metoda izvršava odredjenu funkciju (callback) koristeći svaki elemenat prosledjenog niza. Ova funkcija je manje fleksbilna od standardne “for petlje” jer nema uslovne izraze i ne postoji mogućnost da se prekine jednom započeti “loop” osim da izbaci izuzetak. Callback funkciji metoda prosledjuje tri parametra:
- vrednost člana niza
- indeks člana niza
- niz (nad kojim se izvršava metoda)
1 2 3 |
nekiNiz.forEach(function (currentValue, index, array) { //neki proracun }, [thisArg]); |
Pored callback funkcije može (opciono) da se prosledi i argument thisArg, koji definiše na šta će da ukazuje rezervisana reč this u okviru callback funkcije. Sama funkcija ne vraća ništa automatski, stoga nije “chainable” (na nju se ne može na ulančati sledeća metoda). Čak i posle eksplicitnog korišćenja return izraza, neće vratiti ništa posle iteracije.
Primer
1 2 3 4 5 |
var nekiNiz = ['a', 'b', 'c']; nekiNiz.forEach(function(element) { console.log(element); }); //Vraca: "a" "b" "c" |
Isti rezultat može da se dobije koristeći druge atribute
1 2 3 4 5 |
var nekiNiz = ['a', 'b', 'c']; nekiNiz.forEach(function(element, index, prosledjen_niz) { console.log(prosledjen_niz[index]); }); //Vraca: "a" "b" "c" |
Primer
Callback funkcija ne može da koristi u proračunu “prazne članove niza” (član niza sa indeksom kome nije prodružena vrednost). Stoga u narednom primeru ova metoda neće uzimati u obzir prazan element, pa će član niza sa indeksom 2 biti preskočen:
1 2 3 4 5 |
function callbackFunkcija(element, index, array) { console.log('a[' + index + '] = ' + element); } [2, 5, , 9].forEach(callbackFunkcija); // Vraća: a[0] = 2 a[1] = 5 a[3] = 9 |
Array.prototype.from()
Korišćenjem metode “from()” možemo od “array-like” ili “iterable” napraviti niz:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
// String u niz Array.from('foo'); //Vraća: ["f", "o", "o"] // Set u niz var s = new Set(['foo', window]); Array.from(s); // Vraća: ["foo", window] // Map u niz var m = new Map([[1, 2], [2, 4], [4, 8]]); Array.from(m); // Vraća: [[1, 2], [2, 4], [4, 8]] // Array like u niz function f() { return Array.from(arguments); } f(1, 2, 3); // Vraća: [1, 2, 3] |
Array.prototype.find()
Ova metoda vraća prvi član niza koji zadovoljava uslov (uslov u okviru callback funkcije). Callback funkciji metoda prosledjuje tri parametra:
- vrednost člana niza
- indeks člana niza
- niz (nad kojim se izvršava metoda)
Pored callback funkcije može (opciono) da se prosledi i argument thisArg, koji definiše na šta će da ukazuje rezervisana reč this u okviru callback funkcije.
1 2 3 |
izvorniNiz.find(function (currentValue, index, array) { //neki uslov }, [thisArg]); |
Primer
1 2 3 4 5 6 7 8 9 10 11 |
var korpa = [ {imeVoca: 'banana', kolicina: 0}, {imeVoca: 'jabuka', kolicina: 2}, {imeVoca: 'visnja', kolicina: 5} ]; function daliImaVoca(vocka) { return vocka.kolicina > 0 ; // Vraca: {imeVoca: 'jabuka', kolicina: 2} } var poslastice = korpa.find(daliImaVoca); console.log("Korpa nije prazna, ima " + poslastice.imeVoca); // Vraca: Korpa nije prazna, ima jabuka |
Metoda findIndex() radi sličnu stvar, stim što umesto prvog elementa koji je zadovoljio uslov, vraća njegov index u nizu.
Array.prototype.indexOf()
Search the array for an element and returns its position
Array.prototype.inludes()
Metoda koja je stigla sa ES2016 standardom a proverava da li postoji traženi element u nizu.
1 2 3 4 5 6 |
var array1 = [1, 2, 3]; console.log(array1.includes(2)); // Vraća: true var pets = ['cat', 'dog', 'bat']; console.log(pets.includes('cat')); // Vraća: true console.log(pets.includes('at')); // Vraća: false |
Array.prototype.isArray()
Checks whether an object is an array
Array.prototype.join()
Joins all elements of an array into a string
Array.prototype.lastIndexOf()
Search the array for an element, starting at the end, and returns its position
Array.prototype.map()
Ovaj metod vraća novi niz, koji se dobija koristeći callback funkciju nad elementima izvornog niza obraćajući pažnju na redosled članova izvornog niza. Kao i kod funkcije forEach() callback funkcija ne koristi u proračunu “prazne članove niza” (član niza sa indeksom kome nije prodružena vrednost). Funkcija map() ne utiče na izvorni niz. Callback funkciji metoda prosledjuje tri parametra:
- vrednost člana niza
- vrednost člana niza
- indeks člana niza
- niz (nad kojim se izvršava metoda)
1 2 3 |
var noviNiz = izvorniNiz.map(function (currentValue, index, array) { //neki uslov }, [thisArg]); |
Pored callback funkcije može (opciono) da se prosledi i argument thisArg, koji definiše na šta će da ukazuje rezervisana reč this u okviru callback funkcije.
Primer
1 2 3 4 5 6 |
var izvorniNiz = [1, 2, 3]; var noviNiz = izvorniNiz.map(function (clanNiza){ return clanNiza * 10; }); console.log (noviNiz); // Vraća: [10, 20, 30] |
Primer
1 2 3 4 5 6 7 8 9 10 11 |
var osobe = [ {ime : "Pera", prezime: "Radic"}, {ime : "Mika", prezime: "Maric"}, {ime : "Zika", prezime: "Peric"} ]; function napraviPunoIme(osoba,index) { var punoIme = [osoba.ime,osoba.prezime].join(" "); return punoIme; } console.log(osobe.map(napraviPunoIme)); |
Obratiti pažnju na slučaj kada se za callback funkcije koriste funkcije koje zahtevaju jasno definisane parametere, a ne pomenuta tri parametra koja prosledjuje map() funkcija.
Najbolji primer je parseInt() funkcija koja za prvi parametar zahteva string a za drugi izbor numeričkog sistema.
1 2 |
var noviNiz = ["5", "2", "8"].map(parseInt); console.log(noviNiz); //Vraca: [5, NaN, NaN] |
Funkcija parseInt() vraća NaN kada za drugi parametar (koji potražuje tip numeričkog sistema, očekivani brojevi su: 2, 8, 10, 16…), od map() metode dobije indeks niza.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
a=parseInt("5",0); console.log(a); // Vraca: 5 b=parseInt("5",1); console.log(b); // Vraca: NaN c=parseInt("5",2); console.log(c); // Vraca: NaN . . . d=parseInt("5",10); console.log(d); // Vraca: 5 |