Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

231
Vistas
Filtre la matriz de objetos en javascript según la gravedad y la singularidad

Considere lo siguiente como mi matriz de entrada de objetos:

 const arr = [ { src: 'x1', dst: 'x2', severity: null}, { src: 'x1', dst: 'x2', severity: null}, { src: 'x1', dst: 'x2', severity: 1}, { src: 'x1', dst: 'x2', severity: 2}, { src: 'x1', dst: 'x2', severity: 3}, { src: 'x1', dst: 'x2', severity: 4}, { src: 'x1', dst: 'x2', severity: 5}, { src: 'x1', dst: 'x2', severity: 6}, { src: 'x1', dst: 'x2', severity: 7}, { src: 'x2', dst: 'x1', severity: null}, { src: 'x2', dst: 'x1', severity: null}, { src: 'x2', dst: 'x1', severity: 5}, { src: 'x2', dst: 'x1', severity: 1}, { src: 'x3', dst: 'x4', severity: null} ];

Aquí src, dst y severidad representan el origen, el destino y la severidad de los valores de la matriz. el resultado esperado debería ser como el siguiente:

 [ { src: 'x1', dst: 'x2', severity: 7 }, { src: 'x2', dst: 'x1', severity: 5 }, { src: 'x3', dst: 'x4', severity: null } ]

Básicamente, tendría que obtener la matriz con src y dst únicos, que también tengan el valor de gravedad más alto, digamos aquí para x1 como src y x2 como destino 7 es el valor de gravedad más alto, por lo tanto, se agrega a la matriz resultante, de manera similar para x2 como dst y x1 como src.

En el caso de x3 como src y x4 como dst, no hay otros valores con x3 como src y x4 como destino, por lo tanto, solo la gravedad disponible es nula, por lo tanto, se agrega a la matriz.

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Básicamente, un groupBy con una pequeña transformación para obtener el resultado final y un valor máximo:

 const arr = [ { src: 'x1', dst: 'x2', severity: null }, { src: 'x1', dst: 'x2', severity: null }, { src: 'x1', dst: 'x2', severity: 1 }, { src: 'x1', dst: 'x2', severity: 2 }, { src: 'x1', dst: 'x2', severity: 3 }, { src: 'x1', dst: 'x2', severity: 4 }, { src: 'x1', dst: 'x2', severity: 5 }, { src: 'x1', dst: 'x2', severity: 6 }, { src: 'x1', dst: 'x2', severity: 7 }, { src: 'x2', dst: 'x1', severity: null }, { src: 'x2', dst: 'x1', severity: null }, { src: 'x2', dst: 'x1', severity: 5 }, { src: 'x2', dst: 'x1', severity: 1 }, { src: 'x3', dst: 'x4', severity: null }, ]; const res = Object.entries( arr.reduce((p, n) => { const key = n.src + '.' + n.dst; const sev = n.severity ?? 0; if (!p[key]) p[key] = sev; else p[key] = Math.max(p[key], sev); return p; }, {}), ).map(([key, severity]) => ({ src: key.split('.')[0], dst: key.split('.')[1], severity: severity || null })); console.log(res);

about 4 years ago · Juan Pablo Isaza Denunciar

0

 const arr = [ { src: 'x1', dst: 'x2', severity: null}, { src: 'x1', dst: 'x2', severity: null}, { src: 'x1', dst: 'x2', severity: 1}, { src: 'x1', dst: 'x2', severity: 2}, { src: 'x1', dst: 'x2', severity: 3}, { src: 'x1', dst: 'x2', severity: 4}, { src: 'x1', dst: 'x2', severity: 5}, { src: 'x1', dst: 'x2', severity: 6}, { src: 'x1', dst: 'x2', severity: 7}, { src: 'x2', dst: 'x1', severity: null}, { src: 'x2', dst: 'x1', severity: null}, { src: 'x2', dst: 'x1', severity: 5}, { src: 'x2', dst: 'x1', severity: 1}, { src: 'x3', dst: 'x4', severity: null} ]; var helper = {}; var result = arr.reduce(function(r, o) { var key = o.src + '-' + o.dst; if(!helper[key]) { helper[key] = Object.assign({}, o); // create a copy of o r.push(helper[key]); } else { if( !helper[key].severity){ helper[key].severity = o.severity; }else{ if(o.severity > helper[key].severity ){ helper[key].severity = o.severity; } } } return r; }, []); console.log(result);

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda