Javascript: indexOf медленный на высоком индексе, несмотря на разреженный массив?
Во время выполнения некоторых тестов на моем сайте, я получил массив, который имеет только 10 строк в нем, но один с очень высоким индексом (600 000 000).
Запуск indexOf на этом массиве очень медленный, заставляя всю вкладку зависать на несколько секунд для каждого вызова.
Когда я попытался найти информацию об этом, большинство, казалось, говорили, что современные реализации Javascript используют разреженный массив и что это не должно быть проблемой. Я использую последнюю версию Chrome 62.Проблема в том, что фактически воспроизводится только в консоли инструментов разработчика. Если вы попытаетесь выполнить следующий код:
test = [];
test[600000000] = "test";
test.indexOf("test");
Вы увидите, что консоли требуется несколько секунд, чтобы вернуть индекс, указывая, что Javascript циклически перебирает каждый индекс от 0 до 600000000, а не переходит непосредственно к одному элементу. Это нормальное поведение?