Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

222
Visualizações
Clasificación por 3 criterios diferentes en JavaScript

Estoy tratando de ordenar esta Lista a continuación, primero por Relación (si es un suscriptor, entonces debería ser el primero) y luego por Activo vs inactivo. Activo debe estar antes de Inactivo, luego cada uno de los activos e inactivos debe ordenarse por orden de edad descendente. Así que tengo esta matriz:

 [{status: 'Active', BirthDate: '12/31/1960', Relationship:"Friend"}, {status: 'Active', BirthDate: '12/31/1985', Relationship:"Wife"}, {status: 'Inactive', BirthDate: '12/31/1998', Relationship:"Son"}, {status: 'Inactive', BirthDate: '12/31/1996',Relationship:"Daughter"}, {status: 'Active', BirthDate: '12/31/1995', Relationship:"Daughter"}, {status: 'Active', BirthDate: '12/31/1979', Relationship:"Subscriber"}, {status: 'Inactive', BirthDate: '12/31/1999', Relationship:"Son"} ]

y el resultado debe ser:

 [{status: 'Active', BirthDate: '12/31/1979', Relationship:"Subscriber"}, {status: 'Active', BirthDate: '12/31/1960', Relationship:"Friend"}, {status: 'Active', BirthDate: '12/31/1985', Relationship:"Wife"}, {status: 'Active', BirthDate: '12/31/1995', Relationship:"Daughter"}, {status: 'Inactive', BirthDate: '12/31/1992', Relationship:"Son"}, {status: 'Inactive', BirthDate: '12/31/1996',Relationship:"Daughter"}, {status: 'Inactive', BirthDate: '12/31/1999', Relationship:"Son"} ]

Intenté esto a continuación, pero no parece funcionar:

 testlist = testlist.sort((a, b) => (a.Relationship === "Subscriber" ) ? -1 :(a.status === "Active") ? -2 : (b.BirthDate - a.BirthDate) ? -3 : 1);

¿Hay alguna manera de hacer esto usando el método .sort en JavaScript?

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Usando Array#sort :

 const arr = [ {status: 'Active', BirthDate: '12/31/1960', Relationship:"Friend"}, {status: 'Active', BirthDate: '12/31/1985', Relationship:"Wife"}, {status: 'Inactive', BirthDate: '12/31/1998', Relationship:"Son"}, {status: 'Inactive', BirthDate: '12/31/1996',Relationship:"Daughter"}, {status: 'Active', BirthDate: '12/31/1995', Relationship:"Daughter"}, {status: 'Active', BirthDate: '12/31/1979', Relationship:"Subscriber"}, {status: 'Inactive', BirthDate: '12/31/1999', Relationship:"Son"} ]; const sorted = arr.sort( ( { status: statusA, Relationship: relationshipA, BirthDate: birthDateA }, { status: statusB, Relationship: relationshipB, BirthDate: birthDateB } ) => { const relationship = (relationshipB === 'Subscriber') - (relationshipA === 'Subscriber'); if(relationship) return relationship; const status = (statusB === 'Active') - (statusA === 'Active'); if(status) return status; const birthday = (new Date(birthDateA)).getTime() - (new Date(birthDateB)).getTime(); return birthday; }); console.log(sorted);

about 4 years ago · Juan Pablo Isaza Relatório

0

Aquí hay una manera de hacerlo

 let arr = [{status: 'Active', BirthDate: '12/31/1960', Relationship:"Friend"}, {status: 'Active', BirthDate: '12/31/1985', Relationship:"Wife"}, {status: 'Inactive', BirthDate: '12/31/1998', Relationship:"Son"}, {status: 'Inactive', BirthDate: '12/31/1996',Relationship:"Daughter"}, {status: 'Active', BirthDate: '12/31/1995', Relationship:"Daughter"}, {status: 'Active', BirthDate: '12/31/1979', Relationship:"Subscriber"}, {status: 'Inactive', BirthDate: '12/31/1999', Relationship:"Son"} ] arr.sort((a,b)=> (a.status.localeCompare(b.status) || new Date(a.BirthDate) - new Date(b.BirthDate))); let index = arr.findIndex(i => i.Relationship === "Subscriber") arr.unshift(arr.splice(index, 1)[0]) console.log(arr)

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda