Quiero contar elementos duplicados en mi matriz de objetos, utilizo este código a continuación, pero tengo este error: //Error de tipo: no se pueden leer las propiedades de undefined (leyendo 'tipo')
//this is my array data[ 1:{cs:'10', name:'a' , age}, 2:{cs:'20', name :'b', age:'25'}, 3:{cs:'10', name :'h', age:'51'}, 4:{cs:'10', name :'g', age:'30'}, ...] //this is my result that i want finalArray[ {cs:'10', count :3}, {cs:'20', count :1 }, ...]TypeError: no se pueden leer las propiedades de undefined (leyendo 'tipo')
const prepareSeries = (data, sectors) => { let finalArray = [{}]; const map = new Map(); finalArray.forEach(function (stockItem) { if (map.has(stockItem.cs)) { map.get(stockItem.cs).count++; } else { map.set(stockItem.cs, Object.assign(stockItem, { count: 1 })); } }); finalArray = [...map.values()]; const result = Object.entries(finalArray) .sort((a, b) => b[1] - a[1]) .slice(0, 10); return [ console.log(result), ]; };Según tengo entendido, ¿quiere contar las ocurrencias de valores cs únicos en su matriz de data ? Cosa segura.
const data = [ { cs: "10", name: "a", age: "72" }, { cs: "20", name: "b", age: "25" }, { cs: "10", name: "h", age: "51" }, { cs: "10", name: "g", age: "30" }, ]; const countsByCs = {}; data.forEach(({ cs }) => { countsByCs[cs] = (countsByCs[cs] || 0) + 1; }); const finalArray = Object.entries(countsByCs) .map(([cs, count]) => ({ cs, count })) .sort((a, b) => b.count - a.count); console.log(finalArray);salidas
[ { cs: '10', count: 3 }, { cs: '20', count: 1 } ]Primero, haga los conteos usando Array.prototype.reduce() y luego ordene usando Array.prototype.sort() .
Lo siguiente también funcionaría.
const data = [ { cs: "10", name: "a", age: "31" }, { cs: "20", name: "b", age: "25" }, { cs: "10", name: "h", age: "51" }, { cs: "10", name: "g", age: "30" }, ]; const output = Object.entries( data.reduce((prev, { cs }) => { prev[cs] = prev[cs] ? prev[cs] + 1 : 1; return prev; }, {}) ) .map(([cs, count]) => ({ cs, count })) .sort((a, b) => b.count - a.count); console.log(output); Intercambie a y b en b.count - a.count , si desea cambiar el orden de clasificación.