在下面的代码中,JSONObject.length
是2:
var JSONObject = [{
"name": "John Johnson",
"street": "Oslo West 16",
"age": 33,
"phone": "555 1234567"
}, {
"name": "John Johnson",
"street": "Oslo West 16",
"age": 33,
"phone": "555 1234567"
}];
但是,在下面的代码中,JSONObject.length
未定义。为什么呢?
var JSONObject = {
"name": "John Johnson",
"street": "Oslo West 16",
"age": 33,
"phone": "555 1234567"
};
答案 0 :(得分:17)
JavaScript没有对象的.length属性。如果你想要解决它,你必须手动迭代对象。
function objLength(obj){
var i=0;
for (var x in obj){
if(obj.hasOwnProperty(x)){
i++;
}
}
return i;
}
alert(objLength(JSONObject)); //returns 4
修改强>
Javascript已经移动了,因为这是最初编写的,IE8是无关紧要的,你应该感到安全使用Object.keys(JSONObject).length
。更干净。
答案 1 :(得分:4)
以下实际上是一个JSON对象数组 :
var JSONObject = [{ "name":"John Johnson", "street":"Oslo West 16", "age":33,
"phone":"555 1234567"}, {"name":"John Johnson", "street":"Oslo West 16",
"age":33, "phone":"555 1234567" }];
因此,在JavaScript中,length是数组的属性。在你的第二种情况下,即
var JSONObject = {"name":"John Johnson", "street":"Oslo West 16", "age":33,
"phone":"555 1234567"};
JSON对象不是数组。因此,长度属性不可用,并且将是未定义的。所以你可以把它作为一个数组,如下所示:
var JSONObject = [{"name":"John Johnson", "street":"Oslo West 16", "age":33,
"phone":"555 1234567"}];
或者如果您已经有对象说JSONObject
。您可以尝试以下操作:
var JSONObject = {"name":"John Johnson", "street":"Oslo West 16", "age":33,
"phone":"555 1234567"};
var jsonObjArray = []; // = new Array();
jsonObjArray.push(JSONObject);
你得到了length
财产。