Необходимо удалить из массива объектов все элементы у которых значения определённого свойства не являются уникальными. Но в моём случае мне нужно удалить также и первый объект, который затем повторяется. Поясню на примере ниже:
let data = [
{name:"Joe", date:'2018-07-01', amt:250 },
{name:"Mars", date:'2018-07-01', amt:250 },
{name:"Joe", date:'2018-07-02', amt:250 },
{name:"Saturn", date:'2018-07-01', amt:250 },
{name:"Joe", date:'2018-07-02', amt:250 },
{name:"Jupiter", date:'2018-07-01', amt:250 },
]
let resArr = [];
data.filter(function(item){
let i = resArr.findIndex(x => (x.name == item.name));
if(i <= -1){
resArr.push(item);
}
return null;
});
console.log(resArr)
В результате выполнения кода элементы имеющие значение свойства name "Joe" будут удалены, но первый элемент имеющий name "Joe" останется, мне же нужно, чтобы в случае если name: "Joe" повторяется ещё хотя бы раз, то удаляются все элементы с таким значением, включая и самый первый. Т.е. в итоговом массиве не должно быть ни одного элемента с name:"Joe".
Я также пытался реализовать это с помощью кода ниже, но результат получается всё тот же:
let unique = data.reduce((acc, item) => acc.map[item.budgetid] ? acc : ((acc.map[item.budgetid] = true), acc.unique.push(item), acc), {
map: {},
unique: []
}).unique;