Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

331
Views
¿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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!