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()))