06.08.2010, 13:44
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
Массивы в JavaScript
Серия из 10 статеек о массивах в JavaScript.
UPD: Да, кстати, статейки мои, поэтому все вопросы можно сюда.
Последний раз редактировалось Kolyaj, 06.08.2010 в 14:25.
|
|
06.08.2010, 14:21
|
Любитель
|
|
Регистрация: 16.12.2009
Сообщений: 422
|
|
у, интересно)
|
|
06.08.2010, 14:29
|
|
|
Регистрация: 10.07.2008
Сообщений: 3,873
|
|
Я бы указал в статье на подводный камень, при клонировании массивов при помощи slice. Подмассивы так и останутся ссылками на объекты.
var array1 = [[1]];
var array2 = array1.slice(0);
array2[0][0] = 2;
alert(array1[0][0]);
Если бы клонировали, что-то вроде [{1}], то было бы более очевидно, а так массив, как массив, обычный двумерный, не задумываешься что подмассив тоже объект.
|
|
06.08.2010, 14:30
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
Octane,
да, нужно уточнить, спасибо.
|
|
06.08.2010, 14:46
|
|
|
Регистрация: 10.07.2008
Сообщений: 3,873
|
|
А еще можно создать массив с дефолтными значениями:
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));
|
|
06.08.2010, 14:54
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
Нее, про кодогенерацию это отдельную статью писать надо
|
|
06.08.2010, 15:29
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,123
|
|
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)
|
|
06.08.2010, 15:32
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
рони,
это перебор элементов с истинными значениями, а не существующих элементов. Для колорита добавьте в массив нулей ещё.
|
|
06.08.2010, 16:15
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,123
|
|
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)
|
|
06.08.2010, 16:17
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
Сообщение от рони
|
a[2] = undefined;
|
Вот эта строчка не просто так, элемент с индексом 2 существует, и равен undefined.
Сообщение от рони
|
добавил )))
|
Ну осталось null, false, '', как минимум.
|
|
|
|