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

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

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 Report

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 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!