const index = arr.findIndex(n => n.id === id);
if (index !== -1) {
arr.splice(index, 1);
}
или, если нужен новый массив:
const newArr = arr.filter(n => n.id !== id);
Если же id имеют не уникальные значения, то создание нового массива остаётся без изменений, а модификация существующего может выглядеть так:
for (let i = arr.length; i--;) {
if (arr[i].id === id) {
arr.splice(i, 1);
}
}
или так (да,
reduceRight
используется не совсем по назначения, как и оператор
&&
):
arr.reduceRight((_, n, i, a) => n.id === id && a.splice(i, 1), null);
или так:
let countDeleted = 0;
for (let i = 0; i < arr.length; i++) {
arr[i - countDeleted] = arr[i];
countDeleted += arr[i].id === id;
}
arr.length -= countDeleted;
или так:
arr.splice(0, arr.length, ...arr.filter(n => n.id !== id));