Detect array limit for args spread
HTML
<pre id="log"></pre>
JavaScript
function addToLog(message) {
document.getElementById('log').innerText += message + '\n';
}
addToLog(navigator.userAgent);
async function run() {
let time = Date.now();
let arr = [1];
let low = 1;
let high = Number.MAX_SAFE_INTEGER;
while (high - low > 1) {
if (arr.length < high) {
// increase
const step = Math.round((high - arr.length) / 2);
// if arr is shorter than step - just x2
arr = arr.concat(arr.slice(0, step));
} else {
// decrease
arr.length = Math.round(high / 2 + low / 2);
}
if (Date.now() - time > 1000) {
addToLog('Check: ' + arr.length + ' low: ' + low + ' high: ' + high);
await new Promise((resolve) => setTimeout(resolve, 10));
time = Date.now();
}
try {
Math.min(...arr);
low = arr.length;
} catch (e) {
high = Math.min(arr.length, high);
}
}
addToLog('Max length: ' + arr.length + ' low: ' + low + ' high: ' + high);
}
run();