Вы можете сделать это, используя Array.prototype.reduce
. Вам нужно перебрать объекты в массиве и сохранить найденное params
в Set
, если его там еще нет.
Set.prototype.has
позволит вам это выяснить. Если он отсутствует в Set
, вы добавляете его как в экземпляр Set
, так и в конечный накопленный массив, так что на следующей итерации, если param
присутствует в вашем Set
, вы не включаете его объект:
const errors = [{param: 1, val: "err1"}, {param: 2, val: "err2"}, {param: 3, val: "err3"}, {param: 2, val: "err4"}, {param: 1, val: "err5"}];
const { filteredParams } = errors.reduce((acc, e) => {
!acc.foundParams.has(e.param) && (acc.foundParams.add(e.param) &&
acc.filteredParams.push(e));
return acc;
}, {foundParams: new Set(), filteredParams: []});
console.log(filteredParams);