Просмотр полной версии : Ассоциативный массив
Здрасте, у меня вопрос. Создаю массив чисел:
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:
Это что значит если индексы в ключах идут не по порядку то память все равно они занимают?
Нет, не занимают.и как тогда узнать истинную длину массива?
В свойстве length находится воистину истинная длина.
В свойстве length находится воистину истинная длина.
Ну так у меня всего лишь 2 массива ведь, multi[0] и multi[20] должно по идеи казать 2 или 1 если с 0 считать а кажет 21 :blink:
Господи Иисусе.
вот так
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 ) )
Спасиб, а как убрать запятые которые в алерте добавляются?
убрать элементы , значение которых не установлено или их длина равна нулю О_о
а почему тогда если они равны нулю и их нет почему тогда запятые рисуются как будто это пустые элементы?
запятые рисуются как будто это пустые элементы
сам ответил на свой вопрос :)
почему равны нулю?
если они равны нулю,тогда все ок
я про длину сказал
var a = [ "",0,false,null,undefined ]
alert( "длина массива - "+ a.length + "\nСам массив :\n"+a+"\n Длина последнего : "+a[ 0 ].length )
Спасиб, а вот еще глупый вопрос. А как получить сами ключи этого массива?
for(a in multi){
alert(a); // выдает 0,1
alert(multi[a]); // выдает 130,40,80,125,30,5
}
А как получить сами индексы т.е 0 и 20
хм..когда вместо цифр в ключами делаешь буквы то все работает, а почему с цифрами так происходит?
потому что for .. in необходим для перебора свойств хеша ( объекта )
для массива используй while () {} или for( ){}
Ну так у меня всего лишь 2 массива ведь, multi[0] и multi[20] должно по идеи казать 2 или 1 если с 0 считать а кажет 21
если нужен массив с числовыми индексами, незачем в нем оставлять промежутки. Если нужны промежутки - используй ассоциативные массивы объекты (var multi = {'first': [130,40,8], 'second': [125,30,5]}; )
vBulletin® v3.6.7, Copyright ©2000-2025, Jelsoft Enterprises Ltd. Перевод: zCarot