v1
- by hkotsubo 8/1/202200
Setup HTML - click to add setup HTML
disable setup JavaScript
Setup JavaScript
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 });
}
delete caserun single casemove downdrag and drop case


ready



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]);
  }
}
delete caserun single casemove upmove downdrag and drop case


ready



let items = {};
for(let i = 0; i < data.length; i++) {
    items[data[i].position] = data[i];
}
items = Object.values(items);
delete caserun single casemove upmove downdrag and drop case


ready



let items = new Map();
for(let i = 0; i < data.length; i++) {
    items.set(data[i].position, data[i]);
}
items = Array.from(items.values());
delete caserun single casemove updrag and drop case


ready



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;
}, []);
Test Case - click to add another test case
Teardown JS - click to add teardown JavaScript
Output (DOM) - click to monitor output (DOM) while test is running
RUN