web-dev-qa-db-fra.com

Trier un tableau d'objets en dactylographié?

Comment trier un tableau d'objets dans TypeScript?

Plus précisément, triez les objets du tableau sur un attribut spécifique, dans ce cas, nome ("nom") ou cognome ("nom de famille")?

/* 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!

8
Maurizio Rizzo

Cela dépend de ce que vous voulez trier. Vous avez la norme sort function pour Array s en JavaScript et vous pouvez écrire des conditions complexes dédiées à vos objets. 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;
});
17
Jaroslaw K.
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;
}

avez-vous essayé ça comme ça?

3
coenni
    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;
    });
3
rlloyd2001
[{nome:'abc'}, {nome:'stu'}, {nome:'cde'}].sort(function(a, b) {
  if (a.nome < b.nome)
    return -1;
  if (a.nome > b.nome)
    return 1;
  return 0;
});