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

329
Vistas
¿Cómo encontrar el máximo de un elemento interno en una lista de valores clave?

Tengo una lista de elementos como se ve a continuación. Los valores para la clave de cada año son una lista de 10 elementos, pero para abreviar, solo muestro los primeros dos. ¿Cómo puedo encontrar el máximo de todos los valores internos de "recuento"? He analizado varios enfoques, pero ninguno ha funcionado hasta ahora y tal vez me esté perdiendo algo aquí. Por ejemplo, me gustan mucho algunos de los de una sola línea aquí, pero no funcionaron para mí . Ingrese la descripción del enlace aquí.

Solo para aclarar que los datos son el resultado de un anidamiento en el archivo csv y están destinados a ser utilizados en el gráfico d3 y, preferiblemente, no en la biblioteca de importación que no sean las estándar.

 data = [ {'2015': values: [{key: '0', value: {count: 45}},{key: '1', value: {count: 3}}, ... ]}, {'2016': values: [{key: '0', value: {count: 67}},{key: '1', value: {count: 0}}, ... ]}, {'2017': values: [{key: '0', value: {count: 12}},{key: '1', value: {count: 8}}, ... ]} ]

Para mostrar mejor cómo se ven los datos, aquí está la captura de pantalla en caso de que ayude a aclarar la pregunta.

ingrese la descripción de la imagen aquí

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

0

Podría desestructurar el objeto de esta manera aplanando la matriz de valores y luego mapeando para obtener la variable de conteo.

 var data = [ {"key":"2015", "values": [{"key": 0, "value": {"count": 45}},{"key": 1, "value": {"count": 3}}]},{"key":"2016", "values": [{"key": 0, "value": {"count": 67}},{"key": 1, "value": {"count": 0}}]},{"key": "2017", "values": [{"key": 0, "value": {"count": 12}},{"key": 1, "value": {"count": 8}}]} ] var num = Math.max(... data.map(d=>d.values).flat().map(v=>v.value.count)) console.log(num)

about 4 years ago · Juan Pablo Isaza Denunciar

0

Algo como esto debería funcionar

 const myData = [ { key: "2015", values: [10, 5, 4, 3, 2, 1, 0] }, { key: "2015", values: [10, 5, 4, 3, 2, 1, 0] }, { key: "2015", values: [10, 5, 4, 3, 2, 1, 0] }, { key: "2015", values: [100, 5, 4, 3, 2, 1, 0] }, { key: "2015", values: [10, 5, 4, 3, 2, 1, 0] }, ] const maxValue = (data) => { // Setting an initial value to the lowest possible value in Javascript let max = Number.MIN_VALUE; // Iterate over each object in your array of data data.forEach(({values}) => { // Destructure the values from each object and then iterate over those values.forEach(value => { // Set the max to the higher over the current max or current value max = Math.max(max, value); }) }) // Return the max return max; } console.log(maxValue(myData))

Lo que estamos haciendo aquí es iterar sobre cada objeto en la matriz inicial. Luego iterando sobre los valores haciendo un seguimiento de un máximo actual.

about 4 years ago · Juan Pablo Isaza Denunciar

0

Su estructura de datos parece ser incorrecta. No puede tener { '2015': values: [...] } . Esto sería el equivalente de { KEY: VALUE: VALUE} . El navegador parece estar infiriendo el significado de su código y creando un objeto a partir de él de todos modos, pero no es correcto.

Puede hacer un objeto de objetos y tener objetos internos nombrados, como este:

 data = { 2015: { values: [ { key: "0", value: { count: 45 } }, { key: "1", value: { count: 3 } }, ], }, 2016: { values: [ { key: "0", value: { count: 67 } }, { key: "1", value: { count: 0 } }, ], }, 2017: { values: [ { key: "0", value: { count: 12 } }, { key: "1", value: { count: 8 } }, ], }, };

O puede crear una matriz de objetos, como esta:

 data = [ { year: 2015, values: [ { key: "0", value: { count: 45 } }, { key: "1", value: { count: 3 } }, ], }, { year: 2016, values: [ { key: "0", value: { count: 67 } }, { key: "1", value: { count: 0 } }, ], }, { year: 2017, values: [ { key: "0", value: { count: 12 } }, { key: "1", value: { count: 8 } }, ], }, ];

La forma en que obtiene la propiedad de count más alto depende de la estructura de datos que use.

Usando la matriz de objetos, abordaría el problema de esta manera:

 // create a temp storage array to store "count" property of each const countArray = []; // iterate through the outer objects for (const outerObject of data) { // iterate through the objects that are in the "values" array for (const innerObject of outerObject.values) { // push the "count" value to the array countArray.push(innerObject.value.count) } } // sort the array in place, with highest values first countArray.sort((a, b) => b - a); // display the result console.log(countArray[0])

Podría hacer algo similar para la estructura de datos de objeto de objetos, pero necesitaría una sintaxis diferente para eso.

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