tengo debajo de la matriz json
var rowdataarray = [ { "products": "Cars", "solddate" : "2022-01-01", "noofitems" : "7" }, { "products": "books", "solddate" : "2022-01-01", "noofitems" : "10" }, { "products": "Cars", "solddate" : "2022-01-02", "noofitems" : "2" }, { "products": "Table", "solddate" : "2022-01-02", "noofitems" : "5" } ];y luego tener una matriz de categorías
const category = ["Cars","books","Table"]basado en estas dos matrices tratando de crear una nueva matriz que me dará cada día para cada producto cuántos artículos se vendieron. La categoría anterior debe seguir al crear una matriz de datos. si el producto no se vende ese día, debe insertarse como 0.
matriz esperando
var finalarray = [{ date: '2022-01-01', data: [7,10,0] }, { date: '2022-01-02', data: [2,0,5] }]el siguiente código escrito no puede continuar hacia adelante
$.when( $.each(category , function (key, val) { $.each(rowdataarray , function (key, x) { if(x.products == val){ finalarray .push({ "date" : x.solddate, "data" : [x.noofitems] }) } }) }) ).then(function () { console.log(test) });category var rowdataarray = [{"products":"Cars","solddate":"2022-01-01","noofitems":"7"},{"products":"books","solddate":"2022-01-01","noofitems":"10"},{"products":"Cars","solddate":"2022-01-02","noofitems":"2"},{"products":"Table","solddate":"2022-01-02","noofitems":"5"}] const category = ["Cars","books","Table"] const byDate = rowdataarray.reduce((m, { solddate: d, products: p, noofitems: c }) => ({ ...m, [ d ]: { // the date is the top-level key ...m[d], [ p ]: (m[d]?.[p] ?? 0) + parseFloat(c) // add the count to any existing product count } }), {}) console.log("byDate", byDate) const finalarray = Object.entries(byDate).map(([ date, counts ]) => ({ date, data: category.map(cat => counts[cat] ?? 0) })) console.info("finalarray", finalarray) .as-console-wrapper { max-height: 100% !important; }