массивы с пустотами
Несколько вопросов про массивы.
1) Если я пишу: var arr = []; arr[1000] = 12; Массив arr будет занимать место в памяти как массив с 1 элементом или он резервирует в памяти места под предыдущие элементы? 2) Перебор "дырявых" массивов. Как лучше перебирать такие массивы, через "i in arr" или с помощью "forEach" будет лучше? Пользоваться объектом в данном месте не удобно, так как массив будет не всегда дырявым и может быть очень большим. Вроде скорость работы с массивом много выше чем с объектом (но скорость через "i in arr" может быть та же что и у перебора объекта?) |
1) будет занмиать как 1, ничего не резервируется, просто при обращении к ячейке, движок посмотрит что такого ключа у обьекта нет, и вернет undefined
2) Цитата:
Цитата:
|
ну к сожалению в данном случае она как раз вполне критична.
Кстати я проверял что "forEach" проходит только по тем элементам, которые "есть". Например: var arr = []; arr[10] = 1; arr[20] = 2; arr[100] = 10; arr.forEach(function (arrElem, index) { alert(index); }); |
tsigel, оу, не знал, ну тогда используй его чо) по скорости, не смотря на то что это вызов функции, она не уступает for у, так как нативная и оптимизированная.
|
Часовой пояс GMT +3, время: 02:24. |