v1
- by hkotsubo 2/11/202200
Setup HTML - click to add setup HTML
disable setup JavaScript
Setup JavaScript
function getSortKey(item) {
    // simular algo demorado
    for (var i = 0; i < 1000; i++) {}
    return parseInt(item);
}

var array = [];
for (var i = 0; i < 100000; i++) {
    var x = Math.random() * 100000;
    array.push(x.toString());
}

var computed = {};
function getSortKeyMem(item) {
    if (!computed[item]) {
        for (var i = 0; i < 1000; i++) {}
        computed[item] = parseInt(item);
    }
    return computed[item];
}

delete caserun single casemove downdrag and drop case


ready



for (let i = 0; i < array.length; i++) {
    array[i] = [array[i], getSortKey(array[i])];
}
array.sort((a, b) => a[1] - b[1]);
for (let i = 0; i < array.length; i++) {
    array[i] = array[i][0];
}
delete caserun single casemove upmove downdrag and drop case


ready



array = array
    // decorate: computa a chave para cada elemento e guarda no prĂ³prio array
    .map(e => [e, getSortKey(e)])
    // ordena usando o valor computado
    .sort((a, b) => a[1] - b[1])
    // undecorate: remove as chaves, deixando apenas os elementos originais
    .map(e => e[0]);
delete caserun single casemove upmove downdrag and drop case


ready



for (let i = 0; i < array.length; i++) {
    array[i] = { original: array[i], sortKey: getSortKey(array[i]) };
}
array.sort((a, b) => a.sortKey - b.sortKey);
for (let i = 0; i < array.length; i++) {
    array[i] = array[i].original;
}
delete caserun single casemove upmove downdrag and drop case


ready



array.sort((a, b) => getSortKey(a) - getSortKey(b));
delete caserun single casemove updrag and drop case


ready



array.sort((a, b) => getSortKeyMem(a) - getSortKeyMem(b));
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