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

121
Vistas
Ordene la matriz para que los valores cero estén en la parte inferior de cada grupo y los valores restantes se ordenen alfabéticamente

Es necesario ordenar la matriz para que los valores con el mismo usuario actual estén en la parte superior y estos valores se ordenen por nombre, si no hay nombre, entonces es necesario ordenarlos en cada grupo.

 const currentUser = 256; const settings = [ { name: null, userId: 256, }, { name: 'Bear', userId: 256, }, { name: 'Anatomy', userId: 256, }, { name: null, userId: 12, }, { name: null, userId: 23, }, { name: 'Anatomy', userId: 43, }, ]; settings.sort((a, b) => { const aName = a.name || null; const bName = b.name || null; return ( (aName === null) - (bName === null) || Number(b.userId === currentUser) - Number(a.userId === currentUser) || aName - bName ); }); console.log(settings);

El resultado debe ser una matriz:

 [ { name: 'Anatomy', userId: 256, }, { name: 'Bear', userId: 256, }, { name: null, userId: 256, }, { name: 'Anatomy', userId: 43, }, { name: null, userId: 12, }, { name: null, userId: 23, }, ]

Agradecería cualquier ayuda, saludos cordiales, que tenga un buen día.

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

0

El siguiente es el orden seguido en el código:

  • Otorgue la mayor preferencia al userId actual coincidente de currentUser de usuario y si dos userId de usuario coinciden con usuario actual, currentUser alfabéticamente por su name y, para nombres null , colóquelos al final ( en ese grupo ).
  • Ordene otros elementos por su userId de usuario en orden descendente.
  • Para los elementos que tienen el mismo userId de usuario, vuelva a ordenarlos alfabéticamente por su name y para los nombres null colóquelos al final ( en ese grupo ).

 const currentUser = 43; const settings = [ { name: null, userId: 256 }, { name: null, userId: 43 }, { name: "Abby", userId: 43 }, { name: "Bear", userId: 256 }, { name: "John", userId: 256 }, { name: "Simon", userId: 43 }, { name: null, userId: 12 }, { name: null, userId: 23 }, { name: "Anatomy", userId: 43 }, ]; function sortByName(a, b) { if (Object.is(a, null) && Object.is(b, null)) { return 0; } else if (Object.is(a, null)) { return 1; } else if (Object.is(b, null)) { return -1; } else { return a.localeCompare(b); } } settings.sort((a, b) => { // Objects that have same `userId` as `currentUser` if (a.userId === currentUser && b.userId === currentUser) { return sortByName(a.name, b.name); } else if (a.userId === currentUser) { return -1; } else if (b.userId === currentUser) { return 1; } // Other objects if (a.userId > b.userId) { return -1; } else if (a.userId < b.userId) { return 1; } else { return sortByName(a.name, b.name); } }); console.log(settings);

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