Necesito crear una matriz que contenga todos los valores de visits
si la fecha es la misma sin crear matrices de date
duplicadas
const MOCK = { data: [ {date: "Aug.03", name: "Nihal Pandit", visits: 3 }, {date: "Aug.03", name: "Anthony Elias", visits: 3 }, {date: "Aug.04", name: "Alex P.", visits: 2 }, {date: "Aug.05", name: "Alex P.", visits: 3 }, {date: "Aug.05", name: "Anthony Elias", visits: 3 }, ] }
Pero no estoy seguro de un método que le permita comparar los valores de una iteración a otra al recorrer una matriz. Creo que Array.reduce() podría funcionar, pero no entiendo cómo usar reducir correctamente en este punto.
Estoy buscando un resultado que se parece a:
[["Aug.03", 3, 3], ["Aug.04",2],["Aug.05", 2, 3]
Entonces necesito una matriz para cada fecha (la matriz debe contener esa fecha) y todos los valores de visit
de cada objeto que contiene esa fecha.
let newArray = [] let visitCountValues = MOCK?.data?.map((item, idx)=> { let value = Object.values(item); if(value[0] === value[0]){ newArray.push([value[0], value[1]) } })
después de actualizar tu pregunta, entendí mejor que puedes hacer algo como esto
const visits = [ {date: "Aug.03", name: "Nihal Pandit", visits: 3 }, {date: "Aug.03", name: "Anthony Elias", visits: 3 }, {date: "Aug.04", name: "Alex P.", visits: 2 }, {date: "Aug.05", name: "Alex P.", visits: 3 }, {date: "Aug.05", name: "Anthony Elias", visits: 3 }, ] const result = Object.values(visits.reduce((res, {date, visits}) =>{ const existing = res[date] || [date] res[date] = [...existing, visits] return res }, {})) console.log(result)
Puede usar reduce
para agrupar la array
en un objeto with
la fecha as property, and
Object.values to get the
matrices mapeadas.
const MOCK = { data: [ {date: "Aug.03", name: "Nihal Pandit", visits: 3 }, {date: "Aug.03", name: "Anthony Elias", visits: 3 }, {date: "Aug.04", name: "Alex P.", visits: 2 }, {date: "Aug.05", name: "Alex P.", visits: 3 }, {date: "Aug.05", name: "Anthony Elias", visits: 3 }, ] } const dateGroups = Object.values(MOCK.data.reduce((acc, { date, visits }) => ({ ...acc, [date]: [...(acc[date] || [date]), visits] }), {})) console.log(dateGroups)