2012-12-30 14 views

risposta

16

In realtà è la funzione di array JavaScript reduce anziché essere specifica di TypeScript.

Come descritto in the docs: Applicare una funzione su un accumulatore e ogni valore dell'array (da sinistra a destra) in modo da ridurlo a un valore singolo.

Ecco un esempio dattiloscritto che riassume i valori di un array:

total = [0, 1, 2, 3].reduce((a, b) => a + b); 
alert(total); 

La scatola alert mostrerà 6.

+1

Ah! Ecco perché non sono riuscito a trovare alcuna informazione in relazione a TypeScript. Molte grazie per il vostro aiuto! – Tom

6

Con i generici di TypeScript è possibile fare qualcosa di simile.

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); 
1

Solo una nota in aggiunta alle altre risposte.

Se un valore iniziale viene fornito per ridurre poi a volte deve essere specificato il tipo, vale a dire: -

a.reduce(fn, []) 

potrebbe dover essere

a.reduce〈string[]〉(fn, []) 

o

a.reduce(fn, 〈string[]〉[]) 
+1

Benvenuto in StackOverflow: se inserisci codice, XML o campioni di dati, evidenzia queste righe nell'editor di testo e fai clic sul pulsante "esempi di codice" ({}) sulla barra degli strumenti dell'editor o su Ctrl + K sulla tastiera per il formato e la sintassi lo evidenziano! – WhatsThePoint

+1

Questo non fornisce una risposta alla domanda. Una volta che hai [reputazione] sufficiente (https://stackoverflow.com/help/whats-reputation) sarai in grado di [commentare qualsiasi post] (https://stackoverflow.com/help/privileges/comment); invece [fornisci risposte che non richiedono chiarimenti da parte del richiedente] (https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-can- i-do-, invece). - [Dalla revisione] (/ recensione/post di bassa qualità/18087822) – Melebius

+1

La risposta accettata omette di spiegare che l'accumulatore può essere inizializzato con qualsiasi oggetto e quindi può essere anche di un tipo diverso. –

Problemi correlati