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

104
Visualizações
Cómo encontrar el valor máximo de un atributo en una matriz de objetos

Tengo una variedad de objetos como a continuación,

 [ { id: 1, holiday_for: 1, holiday_on: "2021-10-26" }, { id: 2, holiday_for: 3, holiday_on: "2021-10-26" }, { id: 3, holiday_for: 1, holiday_on: "2021-11-26" }, { id: 4, holiday_for: 3, holiday_on: "2021-11-26" }, { id: 5, holiday_for: 4, holiday_on: "2021-11-26" } ]

donde los objetos tienen las mismas fechas pero diferente holiday_for. holiday_for tiene 3 tipos 1, 3, 4. Estoy tratando de encontrar un objeto con las mismas fechas que tenga max holiday_for.

Si la matriz tiene 2 objetos con las mismas fechas y tipos 1 y 3, 3 tendrán prioridad alta. Si tiene 3 objetos con las mismas fechas con los tipos 1, 3, 4, entonces 4 tendrán prioridad.

Intenté usar reduce pero solo devuelve el objeto con el tipo más alto:

 const filtered = holidays.reduce((max, cur) => max.holiday_for > cur.holiday_for ? max : cur )

Tipo de salida

 [ { id: 2, holiday_for: 3, holiday_on: "2021-10-26" }, { id: 5, holiday_for: 4, holiday_on: "2021-11-26" } ]
about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

  1. Ordenar Si los días festivos tienen el mismo día festivo , así que ordene día festivo por orden descendente.
 holidays_sorted = holidays.sort((a,b)=>{ if(a.holiday_on === b.holiday_on){ return b.holiday_for - a.holiday_for } })
  1. Filtrar únicos vacaciones_en
 let unique = {}; holidays_sorted = holidays.filter(holiday=> { if (unique[holiday.holiday_on]) { return false; } unique[holiday.holiday_on] = true; return true; });
 //keep first unique holiday_on for each date Which is the higher {id: 2, holiday_for: 3, holiday_on: '2021-10-26'}//<--this {id: 1, holiday_for: 1, holiday_on: '2021-10-26'} {id: 5, holiday_for: 4, holiday_on: '2021-11-26'}//<--that {id: 4, holiday_for: 3, holiday_on: '2021-11-26'} {id: 3, holiday_for: 1, holiday_on: '2021-11-26'}

Resultado:

 {id: 2, holiday_for: 3, holiday_on: '2021-10-26'} {id: 5, holiday_for: 4, holiday_on: '2021-11-26'}
about 4 years ago · Juan Pablo Isaza Relatório

0

Como estoy usando Angular, necesito agregar algunos tipos. Basado en la respuesta de @Mehdi Taher , agregué algo de escritura y terminé así:

 const sortedHolidays = holidays.sort( (a: IHoliday, b: IHoliday) => { return a.holiday_on === b.holiday_on ? b.holiday_for - a.holiday_for : 0; } ); let unique: { [key: string]: IHoliday | boolean } = {}; const filtered = duplicateHolidays.filter( (holiday: IHoliday) => { if (unique[holiday.holiday_on]) { return false; } unique[holiday.holiday_on] = true; return true; } );
about 4 years ago · Juan Pablo Isaza Relatório

0

Si entiendo correctamente, algo como lo siguiente.

 let ordered = array .filter(a => a.holiday_on == "2021-11-26") .sort((a, b) => b.holiday_for - a.holiday_for); let priority = ordered[0].holiday_for; ordered.filter(a => a.holiday_for == priority);
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