Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

119
Visualizações
¿Cómo transformar el objeto Javascript en función de una de las columnas?

Realmente estoy luchando con la transformación de Objeto. Tengo una matriz de objetos y quiero transformarla en una entrada de gráfico multilínea de Highcharts.

  1. Para el eje x necesito un objeto de fechas únicas.
  2. Para el eje Y, necesito una serie de objetos, cada uno tendrá la misma cantidad de puntos que las fechas únicas del paso 1. Para una ID y una fecha, si los datos están disponibles, agregará ese valor, de lo contrario, será nulo.

Original:

 [{ "date": "1997-09-29", "Count": 100, "ID": "AB12-R" }, { "date": "1997-12-30", "Count": 104.7, "ID": "AB13-R" }, { "date": "1997-12-30", "Count": 1192, "ID": "BA12-R" }, { "date": "1998-03-30", "Count": 981, "ID": "BA12-R" }, { "date": "1998-06-01", "Count": 341, "ID": "BA12-R" } ]

Producción:

 [ { Identiy: 'AB12-R', data: [100, null, null, null] }, { Identiy: 'AB13-R', data: [null, 104.7, null, null] }, { Identiy: 'BA12-R', data: [null, 1192, 981, 341] } ]

Explicación:

En Original, tengo 4 fechas únicas, por lo tanto, la longitud de los datos para cada identidad es 4. Ahora, para cada fecha única, verificaré si hay alguna entrada en Original, si es así, la insertaré en datos si no es nula.

Mi código:

De alguna ayuda de, esto es lo que estaba intentando. Pero esto no es verificar las fechas únicas y solo crear la longitud del objeto de datos que es igual al número de objetos en el Original. Aquí está esa implementación https://jsfiddle.net/3u9penko/

 const data = [{"date":"1997-09-29","Count":100,"ID":"AB12-R"},{"date":"1997-12-30","Count":104.7,"ID":"AB13-R"},{"date":"1997-12-30","Count":1192,"ID":"BA12-R"},{"date":"1998-03-30","Count":981,"ID":"BA12-R"},{"date":"1998-06-01","Count":341,"ID":"BA12-R"}]; const hcData = []; data.forEach((d, i) => { const checkIfExist = hcData.find(data => data.id === d["ID"]) if (checkIfExist) { checkIfExist.data[i] = d["Count"]; } else { const initialData = [...Array(data.length)] initialData.fill(null, 0, data.length) initialData[i] = d["Count"]; hcData.push({ data: initialData, id: d["ID"] }) } }) console.log(hcData)

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Cree un mapa de fechas únicas para indexar usando un Set para obtener las fechas únicas y luego convertirlo en un mapa con la fecha como clave y el índice como valor.

Reduzca la matriz a un mapa usando la ID como clave e inicializando el valor con una matriz vacía, que tiene la longitud del tamaño del mapa de dates lleno con null . Agregue el valor del objeto actual a la matriz de nulos en el índice de la date en el mapa de dates .

Convierta el Mapa en una matriz de objetos usando Array.from() .

 const fn = arr => { // create a Map of uniqe dates with their index const dates = new Map(Array.from( new Set(arr.map(o => o.date)), (v, i) => [v, i] )) return Array.from( arr.reduce((acc, o, i) => { // if an ID doesn't exist on the Map init it with an empty array of null values (counts) if(!acc.has(o.ID)) acc.set(o.ID, new Array(dates.size).fill(null)) // add the current ID count to the array of counts acc.get(o.ID)[dates.get(o.date)] = o.Count return acc }, new Map), ([Identity, data]) => ({ Identity, data }) // convert to an array of objects ) } const arr = [{"date":"1997-09-29","Count":100,"ID":"AB12-R"},{"date":"1997-12-30","Count":104.7,"ID":"AB13-R"},{"date":"1997-12-30","Count":1192,"ID":"BA12-R"},{"date":"1998-03-30","Count":981,"ID":"BA12-R"},{"date":"1998-06-01","Count":341,"ID":"BA12-R"}] const result = fn(arr) console.log(result)

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda