Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Массивы в JavaScript (https://javascript.ru/forum/misc/11095-massivy-v-javascript.html)

Kolyaj 06.08.2010 13:44

Массивы в JavaScript
 
Серия из 10 статеек о массивах в JavaScript.

UPD: Да, кстати, статейки мои, поэтому все вопросы можно сюда.

JsLoveR 06.08.2010 14:21

у, интересно)

Octane 06.08.2010 14:29

Я бы указал в статье на подводный камень, при клонировании массивов при помощи slice. Подмассивы так и останутся ссылками на объекты.

var array1 = [[1]];
var array2 = array1.slice(0);
array2[0][0] = 2;
alert(array1[0][0]);


Если бы клонировали, что-то вроде [{1}], то было бы более очевидно, а так массив, как массив, обычный двумерный, не задумываешься что подмассив тоже объект.

Kolyaj 06.08.2010 14:30

Octane,
да, нужно уточнить, спасибо.

Octane 06.08.2010 14:46

А еще можно создать массив с дефолтными значениями:
var array = JSON.parse("[" + new Array(100).join("0,") + "]");
alert(array.toSource(1));


Или двумерный массив:
var array = JSON.parse("[[" + new Array(100).join("],[") + "]]");
alert(array.toSource(1));


:D

Kolyaj 06.08.2010 14:54

Нее, про кодогенерацию это отдельную статью писать надо :)

рони 06.08.2010 15:29

Kolyaj,
Вариант перебора только существующих элементов
var a = [1, 2, , , 3, , 5];
a[2] = undefined;
var props = '';
for (var i = 0; i < a.length; i++) {

       a[i]&&(props += a[i] + ' ');

}
alert(props)

Kolyaj 06.08.2010 15:32

рони,
это перебор элементов с истинными значениями, а не существующих элементов. Для колорита добавьте в массив нулей ещё.

рони 06.08.2010 16:15

Kolyaj,
добавил )))
var a = [1, 2, , 0, 3, , 5,0];
a[2] = undefined;
var props = '';
for (var i = 0; i < a.length; i++) {

       (a[i]||a[i]==0)&&(props += a[i] + ' ');

}
alert(props)

Kolyaj 06.08.2010 16:17

Цитата:

Сообщение от рони
a[2] = undefined;

Вот эта строчка не просто так, элемент с индексом 2 существует, и равен undefined.

Цитата:

Сообщение от рони
добавил )))

Ну осталось null, false, '', как минимум.


Часовой пояс GMT +3, время: 15:45.