TypeScript i funkcija reduce za niz


Znaš li što metoda reduce za nizove radi u TypeScriptu? Možeš li dati jednostavan primjer korištenja?

Pretražio sam Google i specifikaciju jezika TypeScript, ali nisam mogao pronaći nikakvo pristojno objašnjenje i primjere.

Odgovor #1

Samo napomena uz ostale odgovore.

Ako se početna vrijednost daje funkciji reduce, ponekad je potrebno odrediti njezin tip, tj.:-

a.reduce(fn, [])

možda će morati biti

a.reduce<string[]>(fn, [])

ili

a.reduce(fn, <string[]>[])

Odgovor #2

Zapravo se radi o JavaScript funkciji polja reduce, a ne o nečemu specifičnom za TypeScript.

Kao što je opisano u dokumentaciji: Primijenite funkciju na akumulator i svaku vrijednost polja (s lijeva na desno) kako biste ga smanjili na jednu vrijednost.

Evo primjera koji zbraja vrijednosti niza:

let total = [0, 1, 2, 3].reduce((accumulator, currentValue) => accumulator + currentValue);
console.log(total);

Odsječak bi trebao proizvesti 6.

Odgovor #3

S TypeScript generičkim tipovima možete napraviti nešto ovako.

class Person {
    constructor (public Name : string, public Age: number) {}
}

var list = new Array<Person>();
list.push(new Person("Baby", 1));
list.push(new Person("Toddler", 2));
list.push(new Person("Teen", 14));
list.push(new Person("Adult", 25));

var oldest_person = list.reduce( (a, b) => a.Age > b.Age ? a : b );
alert(oldest_person.Name);

Odgovor #4

Reduce() je..

  • Metoda reduce() smanjuje niz na jednu vrijednost.
  • Metoda reduce() izvršava pruženu funkciju za svaku vrijednost polja (s lijeva na desno).
  • Povratna vrijednost funkcije pohranjuje se u akumulator (rezultat/ukupno).

Bilo je ..

let array=[1,2,3];
function sum(acc,val){ return acc+val;} // => can change to (acc,val)=>acc+val
let answer= array.reduce(sum); // answer is 6

Promijeni u

let array=[1,2,3];
let answer=arrays.reduce((acc,val)=>acc+val);

Također možete koristiti u

  1. pronađi maksimum
    let array=[5,4,19,2,7];
    function findMax(acc,val)
    {
     if(val>acc){
       acc=val; 
     }
    }

    let biggest=arrays.reduce(findMax); // 19
  1. pronađi element koji se ne ponavlja.
    arr = [1, 2, 5, 4, 6, 8, 9, 2, 1, 4, 5, 8, 9]
    v = 0
    for i in range(len(arr)):
    v = v ^ arr[i]
    print(value)  //6

Povezani članci