const data = [
{ "position": 1, "id": "" }, { "position": 2, "id": "" }, { "position": 3, "id": "456" },
{ "position": 4, "id": "" }, { "position": 3, "id": "123" }, { "position": 4, "id": "456" }
];
for (let i = 0; i < 100000; i++) {
data.push({ 'position': Math.floor(Math.random() * 100) + 1, 'id': i });
}
let items = [];
for(let i = 0; i < data.length; i++) {
let c = items.findIndex(function(f){ return f.position==data[i].position});
if (c > -1) {
items[c] = data[i];
} else {
items.push(data[i]);
}
}
let items = {};
for(let i = 0; i < data.length; i++) {
items[data[i].position] = data[i];
}
items = Object.values(items);
let items = new Map();
for(let i = 0; i < data.length; i++) {
items.set(data[i].position, data[i]);
}
items = Array.from(items.values());
let items = data.reduce((acc, cur) => {
const index = acc.findIndex((value) => value.position === cur.position);
if (index < 0) {
acc.push(cur);
} else {
if (cur.id) {
acc[index] = cur;
}
}
return acc;
}, []);