Строковые индексы в массивах

 
0
 
JavaScript
ava
Cheba | 14.01.2004, 14:33
Я читал, что в массивах могут быть строковые индексы. Тогда к этим елементам можно обращаться, как к свойствам масива. Типа b = A.strIndex. Так как сними работать-то? Как задать ети самые строковые индексы?
Ответы (4)
ava
Sardar | 14.01.2004, 16:44 #
В JavaScript массивы и обьекты это почти одно и тоже. К полю любого обьекта и массива можно обратится двумя способами:
1) object.var
2) object['var']
Поля с числовым "именем" не допустимы потому к ним применяется только второй способ, т.е. object.90 не допустимо. Доступ к полям со строковыми индексами можно сделать через for(i in object);. Но встроенные поля такие как length, функции и т.п. не будут находится. Впрочем для твоего обьекта будет перечислятся все, в том числе и текст функций.

Пример как сделать ассоциативный массив:

test=new Array(); //создаем контейнер
test.field=10;
test['other_field']="Text";
for(i=0; i<10; i++) test['field'+i]=(i%5); //заполним
test[40]="number";
for (i in test) document.body.insertAdjacentHTML("beforeend",test[i]); //пробегаемся по массиву


Такие функции как join, concat, reverse и т.д. ты должен реализовать сам, т.к. текстовые индексы ими не принимаются.

Array.prototype.join=my_join;
function my_join(str) {
var ret="[";
var first=true;
for(i in this) {
if(!first) ret+=str;
else first=false;
ret+=this[i];
}
return (ret+"]");
}
test=new Array();
test["field"]="text";
test['num']=20;
alert(test.join());


Ну и на последок ссылки: Javascript and more
ava
Cheba | 14.01.2004, 17:04 #
Спасибо, вроде понял.
ava
neutrino | 08.02.2004, 12:23 #
А как узнать сужествует ли у объекта определенное поле?
ava
Royan | 09.02.2004, 22:31 #
воспользоваться оператором typeof, например:

var obj = new Object()
obj.num = new Number(0)

if(typeof (obj.num) != "undefined"){
//значит поле есть
}else{
//иначе нет
}
Зарегистрируйтесь или войдите, чтобы написать.
Фирма дня
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Участники
  neutrino   Sardar   Royan   Cheba
advanced
Отправить