Заметки по работе с массивами в JavaScript
Доброго времени суток. В данной статье мы поговорим о работе с массивами JavaScript. Это статья является свободным переводом статьи размещенной на сайте http://jquery-howto.blogspot.com. В данной статье будут рассмотрены некоторые особенности работы с массивами в JavaScript.
Массивы в JavaScript являются объектами
Массивы в JavaScript являются объектами. Понимание этого значительно помогает разобраться в самом языке. Мы просто должны помнить правила работы с объектами.
Ключ массива – это имена свойств объекта. Поэтому, ключ массива не может начинаться с цифры. Мы должны использовать [‘’] для доступа к ключам. Пример:
var array = [1, 2, 'three', 4, 5]; // or 'new Array()' array.0 // SyntaxError: Unexpected number array[0] // 1 array[2] // 'three'
Ключи массива в JavaScript – это строки
Ключи массива в JavaScript являются строками. При доступе к элементу массива с целым числом, JavaScript переведет это число в строку.
Пример:
var array = [1, 2, 'three', 4, 5]; array[1] // 2 array['1'] // 2 array['3'] == array[3] // 'true' array['03'] == array[3] // 'false' – потому, что array['03'] != array['3'] array['03'] == array[03] // 'false' – потому, что число 03 при переводе в строку станет '3’ [\php]</pre> <h2>Ключи массива JavaScript должны быть положительными целыми числами</h2> <pre> Как и в других языках программирования ключи массива должны быть положительными целыми числами. Пример: var array = [1, 2, 'three', 4, 5]; array['06'] = 7; array['str'] = 'some value'; array.prop = 'another value'; console.log( array ); // [1, 2, 'three', 4, 5] array['6'] = 7; console.log( array ); // [1, 2, 'three', 4, 5, undefined, 7]
Для определения массива использовать литералы [] вместо Array()
Определение нового массива через Array() неоднозначно, поэтому для определения массива предпочтительней использовать альтернативное обозначение []. Еще один плюс литералов [] – они читабельны и короче.
Пример:
// Предпочтительный метод var array = [1, 2, 'three', 4, 5]; // Не предпочтительно var array2 = new Array(5);
Цикл по проходу массива
Как было сказано выше массивы в JavaScript являются объектами. Таким образом, мы можем обходить массив используя петлю. Но это не рекомендуется делать. Потому что, при этом перебираются все свойства и необходимо делать проверку HasOwnProperty(). А это означает только две вещи: первое — раздутый и трудно читаемый код и второе – производительность.
Пример:
var array = []; a[1000] = 'some value'; for (key in array) { if (a.hasOwnProperty(key)) { array[key]; // 'some value' } } // Рекомендуется for(var index = 0, l = array.length; index < l; index++) { array[index]; // 'some value' }
Проверка
И самое интересно. Так как массив в JavaScript являеться объектом класса массив, то мы можем делать проверку является ли объект массивом.
Пример:
function is(type, obj) { var clas = Object.prototype.toString.call(obj).slice(8, -1); return obj !== undefined && obj !== null && clas === type; } is('Array', [1, 2, 3]); // true
А если у нас подключен jQuery, то еще проще:
var array = [1, 2, 3]; $.type(array); // 'array' - string $.isArray(array); // true - boolean
Как видите благодаря пониманию, что массивы в JavaScript являются объектами использовать их гораздо легче и можно избегать получения неожиданных результатов.