2017-04-09 5 views
-1

Wie sortiere ich ein Array von Objekten in TypeScript?Sortieren Sie ein Array von Objekten in Typoskript?

Sortieren Sie die Array-Objekte speziell auf ein bestimmtes Attribut, in diesem Fall nome ("Name") oder cognome ("Nachname")?

/* Object Class*/ 
export class Test{ 
    nome:String; 
    cognome:String; 
} 

/* Generic Component.ts*/ 
tests:Test[]; 
test1:Test; 
test2:Test; 

this.test1.nome='Andrea'; 
this.test2.nome='Marizo'; 
this.test1.cognome='Rossi'; 
this.test2.cognome='Verdi'; 

this.tests.push(this.test2); 
this.tests.push(this.test1); 

thx!

+2

Was haben Sie versucht? Bitte zeigen Sie den Code, den Sie ausprobiert haben, und wir können Ihnen vorschlagen, wie Sie ihn beheben können. – RJM

Antwort

2

Es hängt davon ab, was Sie sortieren möchten. Sie haben Standard Sortier Funktion für Array s in JavaScript und Sie können komplexe Bedingungen für Ihre Objekte gewidmet schreiben. f.e

var sortedArray: Test[] = unsortedArray.sort((obj1, obj2) => { 
    if (obj1.cognome > obj2.cognome) { 
     return 1; 
    } 

    if (obj1.cognome < obj2.cognome) { 
     return -1; 
    } 

    return 0; 
}); 
+0

Dies ist nur ein kleines Beispiel, mein Array besteht aus nicht weniger als 20 Elementen –

+0

Ich denke, dass Sie nicht verstehen, Funktion übergeben als Argument der Sortiermethode. Die Funktion hat immer zwei Argumente (die gleichen geben an, was Objekte in Ihrem Array sind) und zeigt, wie Sie Ihr Array sortieren. In meinem Beispiel spielt die Größe des Arrays keine Rolle. Array kann zwei oder tausend Elemente enthalten. Sortieren wird durch Vergleich Element für Funktion (Obj1, Obj2) => {//.comparading} jedes Mal –

2
this.tests.sort(t1,t2)=>(t1:Test,t2:Test) => { 
    if (t1.nome > t2.nome) { 
     return 1; 
    } 

    if (t1.nome < t2.nome) { 
     return -1; 
    } 

    return 0; 
} 

haben Sie etw wie dies versucht?

+0

wie etwas als generische wie die Größe meiner Array zu implementieren variiert regelmäßig? –

+0

sortiert alle Listen, wenn sich die Listengröße ändert, ändert sich auch die sortierte Array-Größe – coenni

-1
const sorted = unsortedArray.sort((t1, t2) => { 
     const name1 = t1.name.toLowerCase(); 
     const name2 = t2.name.toLowerCase(); 
     if (name1 > name2) { return 1; } 
     if (name1 < name2) { return -1; } 
     return 0; 
    }); 
Verwandte Themen