JSFiddle - React, Tailwind, and code Playground

by Danish Farman

HTML

<div id="message">

</div>

JavaScript

function removeDuplicateUsingFilter(arr){
    let unique_array = arr.filter(function(elem, index, self) {
        return index == self.indexOf(elem);
    });
    return unique_array
}

function groupBy(list, keyGetter) {
  const map = new Map();
  list.forEach((item) => {
    const key = keyGetter(item);
    if (!map.has(key)) {
      map.set(key, [item]);
    } else {
      map.get(key).push(item);
    }
  });
  return map;
}

const pets = [{
    type: "Dog",
    name: "Spot",
    amt: 222,
    DeptRate: 2
  },
  {
    type: "Cat",
    name: "Tiger",
    amt: 2221,
    DeptRate: 2
  },
  {
    type: "Dog",
    name: "Rover",
    amt: 122,
    DeptRate: 11
  },
  {
    type: "Cat",
    name: "Leo",
    amt: 123,
    DeptRate: 3
  },
	{
    type: "Cat",
    name: "Leo",
    amt: 123,
    DeptRate: 3
  }
];

const grouped = groupBy(pets, pet => pet.DeptRate);

document.getElementById("message").innerText += JSON.stringify(grouped.get(2));

var tamt = 0;
var deptRateArr = [];
grouped.get(3).forEach(function(i, j) {
  tamt += i.amt;
  deptRateArr.push(i.DeptRate);
});

var uniqueDeptRate = removeDuplicateUsingFilter(deptRateArr);

document.getElementById("message").innerText += " \n Total Amount at Dept Rate " + uniqueDeptRate[0] + "%: " + tamt;