suppose I have an array of object arr1
arr1 = [{name: "name1",id: 1},{name: "name2",id: 1},{name: "name3",id: 4},{name: "name3",id: 3},{name: "name1",id: 5}]
I want the information of count having same id in array or object form.
I tried to get the info using for loop , map and Lodash. I got the result. But want o do it in any efficient way.
My working code
const arr1 = [{name: "name1",id: 1},{name: "name2",id: 1},{name: "name3",id: 4},{name: "name3",id: 3},{name: "name1",id: 5}];
const arr2 = []
for (var i = 0; i < arr1.length; i++) {
var obj = {}
_.keys(arr1[i]).map(o => {
obj[o] = arr1[i][o]
obj["count"] = arr1.filter(a => {
return a.id === arr1[i].id
}).length
})
arr2.push(obj)
}
var arr3 = _.uniqBy(arr2, "id")
console.log(arr3);
<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.21/lodash.min.js"></script>