Подтвердить что ты не робот

Найти длину (размер) массива в jquery

Думаю, я схожу с ума. У меня есть простой вопрос, с которым я борюсь по какой-то причине.

Почему ниже возвращается 'undefined'?

var testvar={};
testvar[1]=2;
testvar[2]=3;
alert(testvar.length);

edit Я изначально напечатал testvar [1].length. Я знал, что это ошибка. Я имел в виду testvar.length

4b9b3361

Ответ 1

Поскольку 2 не является массивом, это число. Номера не имеют длины.

Возможно, вы хотели написать testvar.length; это также undefined, поскольку объекты (созданные с использованием нотации { ... }) не имеют длины.

Только массивы имеют свойство length:

var testvar = [  ];
testvar[1] = 2;
testvar[2] = 3;
alert(testvar.length);    // 3

Обратите внимание, что массивы Javascript индексируются начиная с 0 и не обязательно sparse (следовательно, почему результат равен 3, а не 2 - см. этот ответ для объяснения того, когда массив будет разреженным, а когда он не будет).

Ответ 2

testvar [1] - значение этого индекса массива, который является номером 2. Числа не имеют свойства длины, и вы проверяете на 2.length, который равен undefined. Если вы хотите, чтобы длина массива просто проверяла testvar.length

Ответ 3

Целое число не имеет длины метода. Попробуйте строку

var testvar={};
testvar[1]="2";
alert(testvar[1].length);

Ответ 4

Если length не определена, вы можете использовать:

            function count(array){

                var c = 0;
                for(i in array) // in returns key, not object
                    if(array[i] != undefined)
                        c++;

                return c;
            }

            var total = count(array);

Ответ 5

       var mode = [];
                $("input[name='mode[]']:checked").each(function(i) {
                    mode.push($(this).val());
                })
 if(mode.length == 0)
                {
                   alert('Please select mode!')
                };

Ответ 6

var array=[];

array.push(array);  //insert the array value using push methods.

for (var i = 0; i < array.length; i++) {    
    nameList += "" + array[i] + "";          //display the array value.                                                             
}

$("id/class").html(array.length);   //find the array length.

Ответ 7

          obj={};

        $.each(obj, function (key, value) {
            console.log(key+ ' : ' + value); //push the object value
        });

        for (var i in obj) {
         nameList += "" + obj[i] + "";//display the object value
        }
           $("id/class").html($(nameList).length);//display the length of 
                                                       object.