JSFiddle - React, Tailwind, and code Playground
by Michel Beloshitsky
JavaScript
function makeid() {
var text = "";
var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
for (var i = 0; i < 5; i++)
text += possible.charAt(Math.floor(Math.random() * possible.length));
return text;
}
function testPreservingKeysOrder(keysCount) {
var keysArray = []
var keysDict = {}
var preserved = true
while (keysCount > 0) {
keysArray.push(makeid())
keysCount-=1;
}
keysArray.forEach(k => { keysDict[k] = 1 })
Object.keys(keysDict).forEach((k1, i) => {
preserved = preserved && keysArray[i] === k1
})
return preserved
}
function runTest () {
var stats = {}
for (let j = 0; j < 100; j++) {
for (let i = 0; i < 1000; i++) {
const preserved = testPreservingKeysOrder(i)
if (stats[i] === undefined) {
stats[i] = 0
}
if (!preserved) {
stats[i] += 1
}
}
}
return stats
}
// Считает долго, минутку - три
console.log(JSON.stringify(runTest()))