Одним из решений будет сохранение набора чисел, который вы видели вообще, и другого набора чисел, который вы видели только один раз, и удаление числа из второго набора, если вы видели его ранее:
function findMissingQuad(deliveryIds/*: number[]*/) {
const seen = new Set();
const once = new Set();
for (const id of deliveryIds) {
if (seen.has(id)) {
// We'e seen this one before
once.delete(id);
} else {
// First time we've seen this one
seen.add(id);
once.add(id);
}
}
return [...once];
}
console.log(findMissingQuad([5, 4, 5, 3, 3]));
console.log(findMissingQuad([5, 4, 5, 2, 3, 3]));
Обратите внимание, что он заставил его вернуть массив, поскольку, как вы можете видеть из моего второго примера, возможно иметь более одного уникального значения в массиве.