web-dev-qa-db-fra.com

TypeScript et fonction de réduction de tableau

Savez-vous ce que fait la fonction array reduce dans TypeScript? Pouvez-vous fournir un exemple simple d'utilisation?

Je recherche sur Google et spécification du langage TypeScript mais je n'ai pas trouvé d'explication et d'exemples décents.

32
Tom

Il s'agit en fait de la fonction de tableau JavaScript reduce plutôt que d'être quelque chose de spécifique à TypeScript.

Comme décrit dans la documentation : Appliquer une fonction contre un accumulateur et chaque valeur du tableau (de gauche à droite) afin de la réduire à une seule valeur .

Voici un exemple qui résume les valeurs d'un tableau:

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

La boîte alert affichera 6.

38
JohnnyHK

Juste une note en plus des autres réponses.

Si une valeur initiale est fournie pour réduire, alors parfois son type doit être spécifié, à savoir: -

a.reduce(fn, [])

peut être

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

ou

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

Avec les génériques TypeScript, vous pouvez faire quelque chose comme ça.

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);
11
howardlo

Réduire () est ..

  • La méthode Reduce () réduit le tableau à une seule valeur.
  • La méthode Reduce () exécute une fonction fournie pour chaque valeur du tableau (de gauche à droite).
  • La valeur de retour de la fonction est stockée dans un accumulateur (résultat/total).

C'était ..

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

Remplacer par

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

Vous pouvez également utiliser dans

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

    let biggest=arrays.reduce(findMax); // 19
  1. trouver un élément qui ne se répète pas .
    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
3
Energy