Tengo un objeto que contiene matrices de objetos. Estoy tratando de encontrar el valor más alto de una propiedad de objeto, 'sortOrder' sin iterar manualmente a través de las matrices y los objetos.
Entonces mi variable se ve así:
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} ] };Así que estaría tratando de iterar a través de esto para encontrar eventualmente, en este caso, el orden de clasificación más alto de 33. No necesariamente el índice de matriz o el objeto que lo contiene, solo el número.
Gracias
(Tuve que corregir ligeramente sus datos de entrada: las matrices no incluyen el número de índice como lo muestra).
Es más fácil combinar las dos matrices en el objeto en una lista y luego usar reducir para encontrar el máximo:
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)Puede ordenarlos por el orden de clasificación más alto y luego tomar el mayor de los elementos más altos en cada matriz:
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)Object#values obtenga la lista de matricesArray#flat , convierta la matriz 2d en unaArray#reduce , itere sobre esta lista mientras actualiza un 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);