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

158
Vistas
Javascript - find highest value in an object of arrays of objects

I have an object containing arrays of objects. I'm trying to find the highest value of an object property, 'sortOrder' without manually iterating through the arrays and objects.

So my variable looks like this following:

const myObj = {
 people: [
   0: {firstname: 'Dave', lastName: 'Jones', sortOrder: 22},
   1: {firstname: 'Jane', lastName: 'Smith', sortOrder: 11}
 ],
 otherPeople: [
   0: {firstname: 'Jen', lastName: 'SomeLastName', sortOrder: 33},
   1: {firstname: 'ExampleFirstName', lastName: 'ExampleLastName', sortOrder: 12}
 ]
};

So I'd be trying to iterate through this to eventually find, in this case, the highest sortOrder of 33. Not necessarily the array index or the object containing it, just the number.

Thanks

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

0

(I had to slightly correct your input data: arrays don't include the index number as you're showing.)

Easiest to combine the two arrays in the object into one list and then use reduce to find the maximum:

const myObj = {
  people: [
    {
      firstname: 'Dave',
      lastName: 'Jones',
      sortOrder: 22
    },
    {
      firstname: 'Jane',
      lastName: 'Smith',
      sortOrder: 11
    }
  ],
  otherPeople: [
    {
      firstname: 'Jen',
      lastName: 'SomeLastName',
      sortOrder: 33
    },
    {
      firstname: 'ExampleFirstName',
      lastName: 'ExampleLastName',
      sortOrder: 12
    }
  ]
};


let allPeople = [...myObj.people, ...myObj.otherPeople];

let max = allPeople.reduce((maxSort, person) => {
  return Math.max(maxSort, person.sortOrder)
}, 0));

console.log(max)

about 4 years ago · Juan Pablo Isaza Denunciar

0

You can order them by the highest sortOrder and then take the higher of the highest elements in each array:

const myObj = {
  people: [{
      firstname: 'Dave',
      lastName: 'Jones',
      sortOrder: 22
    },
    {
      firstname: 'Jane',
      lastName: 'Smith',
      sortOrder: 11
    }
  ],
  otherPeople: [{
      firstname: 'Jen',
      lastName: 'SomeLastName',
      sortOrder: 33
    },
    {
      firstname: 'ExampleFirstName',
      lastName: 'ExampleLastName',
      sortOrder: 12
    }
  ]
};
Object.values(myObj).forEach(peopleArray => {
  peopleArray.sort((a, b) => b.sortOrder - a.sortOrder)
})
let maxValue = Math.max(myObj.people[0].sortOrder, myObj.otherPeople[0].sortOrder)
console.log(maxValue)

about 4 years ago · Juan Pablo Isaza Denunciar

0

  • Using Object#values get the list of arrays
  • Using Array#flat, convert the 2d array into one
  • Using Array#reduce, iterate over this list while updating a max

const myObj = {
  people: [ {firstname: 'Dave', lastName: 'Jones', sortOrder: 22}, {firstname: 'Jane', lastName: 'Smith', sortOrder: 11} ],
  otherPeople: [ {firstname: 'Jen', lastName: 'SomeLastName', sortOrder: 33}, {firstname: 'ExampleFirstName', lastName: 'ExampleLastName', sortOrder: 12} ]
};

const maxSortOrder = 
  Object.values(myObj)
  .flat()
  .reduce((max, { sortOrder = 0 }) => sortOrder > max ? sortOrder : max, 0);

console.log(maxSortOrder);

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