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

96
Visualizações
Transformar datos JSON para ChartJS

Estoy aprendiendo a usar ChartJs y me he topado con una pared. Necesito descubrir cómo transformar JSON en etiquetas y datos para un gráfico de barras.

El JSON es una matriz de productos de pedidos. Puede haber cualquier cantidad de productos, por lo que necesito filtrar y crear una lista de productos para las etiquetas de ChartJS. Luego necesito contar cuántas veces aparece el producto en el JSON para determinar cuántos de esos productos se vendieron.

 [ { "order_id": 1, "product_name": "apple" }, { "order_id": 2, "product_name": "orange" }, { "order_id": 3, "product_name": "orange" }, { "order_id": 4, "product_name": "monster truck" }, { "order_id": 5, "product_name": "spark plug" }, { "order_id": 6, "product_name": "apple" }, { "order_id": 7, "product_name": "can of peaches" }, { "order_id": 8, "product_name": "monster truck" }, { "order_id": 9, "product_name": "orange" }, { "order_id": 10, "product_name": "orange" } ]

Espero crear dos matrices para las etiquetas de productos y los pedidos de productos.

 Labels: ["apple", "orange", "monster truck", "spark plug", "can of peaches"] Orders: [2, 4, 2, 1, 1]

¿Cómo puedo hacer esto?

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

0

También puedes probar esta solución (un poco más corta):

 //@ts-nocheck const products = [ { order_id: 1, product_name: "apple", }, { order_id: 2, product_name: "orange", }, { order_id: 3, product_name: "orange", }, { order_id: 4, product_name: "monster truck", }, { order_id: 5, product_name: "spark plug", }, { order_id: 6, product_name: "apple", }, { order_id: 7, product_name: "can of peaches", }, { order_id: 8, product_name: "monster truck", }, { order_id: 9, product_name: "orange", }, { order_id: 10, product_name: "orange", }, ]; const map = {}; products.forEach( (product) => (map[product.product_name] = (map[product.product_name] ?? 0) + 1) ); const Labels = Object.keys(map); const Orders = Object.values(map); console.log({ Labels, Orders });
about 4 years ago · Juan Pablo Isaza Relatório

0

const array = [ { "order_id": 1, "product_name": "apple" }, { "order_id": 2, "product_name": "orange" }, { "order_id": 3, "product_name": "orange" }, { "order_id": 4, "product_name": "monster truck" }, { "order_id": 5, "product_name": "spark plug" }, { "order_id": 6, "product_name": "apple" }, { "order_id": 7, "product_name": "can of peaches" }, { "order_id": 8, "product_name": "monster truck" }, { "order_id": 9, "product_name": "orange" }, { "order_id": 10, "product_name": "orange" } ]; const labels = [...new Set(array.map(value => value.product_name))]; const orders = labels.map(value => { return array.reduce((previousValue, currentValue) => { console.log(currentValue); if (currentValue.product_name === value) { return previousValue + 1; } else { return previousValue; } }, 0); });

Lea acerca de estos métodos de matriz aquí:

  • https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map
  • https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce

El conjunto se usa solo para obtener una matriz de valores únicos: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/Set

Pero debido a que el objeto Set no tiene estos métodos, lo transformamos nuevamente en un Array usando el operador de propagación (...)

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