Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Ассоциативный массив (https://javascript.ru/forum/dom-window/17098-associativnyjj-massiv.html)

simple 05.05.2011 19:04

Ассоциативный массив
 
Здрасте, у меня вопрос. Создаю массив чисел:
var multi=new Array();
multi['0']=[130,40,8];
multi['20']=[125,30,5];
alert(multi.length); // выдает 21
alert(multi);// выдает 130,40,80,125,30,5,,,,,,,,,,,,,,,,кучу запятых

Это что значит если индексы в ключах идут не по порядку то память все равно они занимают? и как тогда узнать истинную длину массива?:blink:

Sweet 05.05.2011 19:13

Цитата:

Сообщение от simple
Это что значит если индексы в ключах идут не по порядку то память все равно они занимают?

Нет, не занимают.
Цитата:

Сообщение от simple
и как тогда узнать истинную длину массива?

В свойстве length находится воистину истинная длина.

simple 05.05.2011 19:17

Цитата:

В свойстве length находится воистину истинная длина.
Ну так у меня всего лишь 2 массива ведь, multi[0] и multi[20] должно по идеи казать 2 или 1 если с 0 считать а кажет 21 :blink:

melky 05.05.2011 19:18

Господи Иисусе.

вот так

function get_TRUTH ( array ){

for( var i = 0, TRUTH  = 0; i < array.length ; i++ ){ 
 
    if( typeof array[ i ] === "undefined" ) continue;

   TRUTH++;

}

return TRUTH;

}



var t = [1,2,3];

t.length = 333;

alert (   get_TRUTH( t )  )

simple 05.05.2011 19:24

Спасиб, а как убрать запятые которые в алерте добавляются?

melky 05.05.2011 19:25

убрать элементы , значение которых не установлено или их длина равна нулю О_о

simple 05.05.2011 19:27

а почему тогда если они равны нулю и их нет почему тогда запятые рисуются как будто это пустые элементы?

melky 05.05.2011 19:38

Цитата:

Сообщение от simple (Сообщение 103485)
запятые рисуются как будто это пустые элементы

сам ответил на свой вопрос :)


почему равны нулю?

если они равны нулю,тогда все ок

я про длину сказал


var a = [ "",0,false,null,undefined ]

alert( "длина массива - "+ a.length + "\nСам массив :\n"+a+"\n Длина последнего : "+a[ 0 ].length )

simple 05.05.2011 19:49

Спасиб, а вот еще глупый вопрос. А как получить сами ключи этого массива?
for(a in multi){
alert(a); // выдает 0,1
alert(multi[a]); // выдает 130,40,80,125,30,5
}

А как получить сами индексы т.е 0 и 20

simple 05.05.2011 20:06

хм..когда вместо цифр в ключами делаешь буквы то все работает, а почему с цифрами так происходит?


Часовой пояс GMT +3, время: 16:15.