12 сентября 2009 :Javascript - о массивах и объектахИтак, сегодня покопалась в списке тем для статей которые хотела бы написать, и решила написать про работу с массивами в яваскриптах. Создание массиваСоздать массив в яваскрипте можно следующими способами:
Массив можно создавать сразу с переменными
Можно создавать ассоциативные массивы
Нельзя создать массив с перечислением ассоциативных значений, т.к. Ассоциативность в массивах поддерживается с применением свойств объектов. Свойство length в яваскриптах не учитывает ассоциативные элементы. var a = ['вася':'Пупкин']; Но можно создать такой объект var a = {'вася':'Пупкин'}; и обращаться к нему как к массиву
Удаление элемента массиваПро удаление чего-либо вообще рекомендую прочитать следующий референс - delete Operator. При удалении элемента массива
У нас не измениться длина (my_array.length) массива и не сам массив не сдвинется на единицу. В данном случае удобно использовать метод splice()
Очень часто нужно удалить конкретное значение из массива, тогда можно использовать следующее
Копирование массиваНачинающие заниматься яваскриптами часто попадают в западню, когда присвоение переменной строки, числа или логической переменной создаёт копию этого значения. В то время как присваивание переменной массива или объекта создаёт ссылку на это значение. Это вызывает путаницу, т.к. оказывается что изменение одной копии массива изменяет и вторую когда не надо, и наоборот когда надо присваивание свойства элемента переменной не изменит его с изменением этого свойства. Пример:
Трудность в том что в яваскриптах нельзя просто сказать языку присвоить переменной ссылку или значение. В Php например ссылку можно создать только специально, используя оператор =&. Итак, решение следующее. Для массивов всё предельно просто
Метод slice(0) означает, вернуть кусок массива от элемента 0 до конца. Т.е. сам массив. Вуаля, копия массива. Следует помнить что этот метод работает только на типизированных массивах. Т.е. не подойдёт для многомерных массивов и объектов. С объектами вообще нет встроенного метода который бы вернул копию объекта. Поэтому можем использовать его прототип.
В данном случае мы рекурсивно проходим по объекту и если его свойство тоже является объектом или массивом мы проходимся по нему так же. Итак чтобы проверим как оно работает:
цикл For в ассоциативном массивеЕсли кто не в курсе, проход по всем ключам массива реализуется очень просто.
Я думаю если вы прочитали эту статью, то вы освоили такой важный элемент как массив в яваскриптах. Буду рада комментариям. P.S. Также рекомендую почитать Mastering Javascript Arrays, там интересно написано о том как яваскрипт поддерживает ассоциативные массивы и почему. |
Либо волшебно используйте ваш логин в Google, Яндекс, рамблер или ЖЖ чтобы войти через Open_ID

Комментарии:
ov3rr
12.10.2009 15:05:03