我想我会发疯的。我有一个简单的问题,我出于某种原因正在努力。
为什么以下返回'undefined'?
var testvar={};
testvar[1]=2;
testvar[2]=3;
alert(testvar.length);
编辑我最初输入了testvar [1] .length。我知道这是一个错误。我的意思是testvar.length
答案 0 :(得分:81)
因为2
不是数组,所以它是一个数字。数字没有长度。
也许你打算写testvar.length
;这也是未定义的,因为对象(使用{ ... }
表示法创建)没有长度。
只有数组具有length属性:
var testvar = [ ];
testvar[1] = 2;
testvar[2] = 3;
alert(testvar.length); // 3
请注意,Javascript数组从0
开始编制索引,并且不一定是sparse(因此结果为3而不是2 - 请参阅this answer以获取有关数组时间的说明将是稀疏的,什么时候不会。)
答案 1 :(得分:4)
testvar [1]是该数组索引的值,它是数字2.数字没有长度属性,并且您正在检查未定义的2.length。如果你想要数组的长度,只需检查testvar.length
答案 2 :(得分:2)
整数没有方法长度。尝试字符串
var testvar={};
testvar[1]="2";
alert(testvar[1].length);
答案 3 :(得分:0)
如果未定义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);
答案 4 :(得分:0)
var mode = [];
$("input[name='mode[]']:checked").each(function(i) {
mode.push($(this).val());
})
if(mode.length == 0)
{
alert('Please select mode!')
};
答案 5 :(得分:-1)
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.
答案 6 :(得分:-2)
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.