I have a simple question that I'm struggling with for some reason.
Why does the below return undefined
?
var testvar={};
testvar[1]=2;
testvar[2]=3;
alert(testvar.length);
edit I originally typed testvar[1].length
. I knew this to be an error. I meant testvar.length
-
What are you trying to accomplish? What do you expect the result to be?Cameron– Cameron2011年03月15日 20:01:50 +00:00Commented Mar 15, 2011 at 20:01
7 Answers 7
Because 2
isn't an array, it's a number. Numbers have no length.
Perhaps you meant to write testvar.length
; this is also undefined, since objects (created using the { ... }
notation) do not have a length.
Only arrays have a length property:
var testvar = [ ];
testvar[1] = 2;
testvar[2] = 3;
alert(testvar.length); // 3
Note that Javascript arrays are indexed starting at 0
and are not necessarily sparse (hence why the result is 3 and not 2 -- see this answer for an explanation of when the array will be sparse and when it won't).
Comments
testvar[1] is the value of that array index, which is the number 2. Numbers don't have a length property, and you're checking for 2.length which is undefined. If you want the length of the array just check testvar.length
Comments
Integer has no method length. Try string
var testvar={};
testvar[1]="2";
alert(testvar[1].length);
Comments
If length
is undefined you can use:
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);
Comments
var mode = [];
$("input[name='mode[]']:checked").each(function(i) {
mode.push($(this).val());
})
if(mode.length == 0)
{
alert('Please select mode!')
};
1 Comment
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.
1 Comment
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.