Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Обращение к свойству объекта по его порядковому номеру.
 
 автор: Гавриленко Дмитрий   (15.12.2012 в 04:06)   письмо автору
 
 

К примеру имеется такой объект



<script>
var objectVar = {1:'doc1',3:'doc2'};
len = objectVar.length;
</script>



Я знаю что у меня 2 свойства, переменная len это показывает. К примеру мне надо удалить свойство которое содержит значение doc2. Я бы мог сделать это так...


delete  objectVar[3];


но программа не знает какое это свойство имеет номер 1 или 3 или 199.

Вот хотел бы спросить, как мне можно обратиться к свойству по порядковому номеру? Чтобы выполнить что-то типа

delete  objectVar.getProp(2); 


чтобы удалить свойство "3" с значение 'doc2'

  Ответить  
 
 автор: Deed   (15.12.2012 в 11:35)   письмо автору
 
   для: Гавриленко Дмитрий   (15.12.2012 в 04:06)
 

Я бы изучил сначала это https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Object/keys, а потом это http://stackoverflow.com/questions/208016/how-to-list-the-properties-of-a-javascript-object

  Ответить  
 
 автор: Гавриленко Дмитрий   (15.12.2012 в 21:13)   письмо автору
 
   для: Deed   (15.12.2012 в 11:35)
 

Нужна хотя бы поддержка IE 8

  Ответить  
 
 автор: ЯСА   (16.12.2012 в 09:25)   письмо автору
 
   для: Гавриленко Дмитрий   (15.12.2012 в 04:06)
 

цитата:
------------------
<script>
var objectVar = {1:'doc1',3:'doc2'};
len = objectVar.length;
</script>

Я знаю что у меня 2 свойства, переменная len это показывает.
------------------(конец цитаты)

и как, интересно, ваша переменная len "это показывает"?
в каком из браузеров alert (len) покажет что-то, отличное от undefined?

метода, ПРЯМО определяющего количество свойств у объекта, НЕ СУЩЕСТВУЕТ
надо перебрать все свойства циклом for...in и подсчитать количество шагов цикла
----

свойства объектов не имеют "порядковых номеров"
и не могут их иметь в принципе

вот лично у вас, Гавриленко Дмитрий (как у человека-гражданинаобъекта), имеются свойства:
1) -- отчество
2) -- вес
3) -- имя
4) -- цвет глаз
5) -- фамилия
6) -- дата рождения
7) -- рост
8) -- национальность
9) -- цвет волос
10) -- вероисповедание
11) -- ваше отношение к наци-лидеру вэ-вэ-пуссину
...


и какой "порядковый номер" у вашей "национальности", например?
в типовых советских анкетах "национальность" шла пятым пунктом (отсюда выражение "инвалид пятой группы")
а я здесь специально прописал её пунктом номер 8

ну и какой "порядковый номер" у вашей национальности?
восьмой?
или zero-индексный седьмой?
или всё же, отдавая дань традициям, пятый?
------

свойства объектов в машинной памяти хранятся по довольно сложному алгоритму
приблизительно по такому:
-- свойства идут в том порядке, в котором присваивались в MSIEv<9, в Лисе и в Сафари
-- а вот в Опере, Хроме и MSIEv9+ ключи, которые можно привести к численному виду, преобразовываются в числа, сортируются по возрастанию и хранятся первыми, перед строковыми

и учтите, например, что свойство "отчество", установленное первым, может быть потом, после определения всех других свойств, удалено оператором delete, а затем заново установлено (либо значение ему будет переприсвоено без удаления)
каким теперь надо считать свойство "отчество"?
первым или же самым последним?
------

в общем, задача ваша бессмысленна по определению
напишите var objectVar = {3:'doc2',1:'doc1'};
и в Лисе "первым" у вас будет doc2, а в Опере, наоборот, doc1

а теперь же ещё имеется и Яндекс-браузер
и фиг его знает - как это организовано там
да, написано, что собран он по технологии Chromium
но у нас и Мерседесы по немецкой технологии собирают... а они потом не ездят :)

  Ответить  
 
 автор: Deed   (16.12.2012 в 18:07)   письмо автору
 
   для: ЯСА   (16.12.2012 в 09:25)
 

Спасибо! Очень полезная информация.

  Ответить  
 
 автор: Гавриленко Дмитрий   (16.12.2012 в 19:37)   письмо автору
 
   для: ЯСА   (16.12.2012 в 09:25)
 

да, с objectVar.length я погорячился. Перебирал свойства, попутно считая их кол-во. Спасибо, что подтолкнули и дали понять до конца что такое свойство объекта. Я решил проблему, перейдя на массив.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования