嗯,我刚刚发现了JSON,但我有一个问题,正确使用它。我真的找不到解决方案...基本上,我只是想计算我的数组元素(计数所有的DM),并包装在一个特定的元素(例如dM1)。JSON计数一个数组元素,并包装在
这里是我的代码,以便您能理解:http://jsfiddle.net/dRycS/9/
嗯,我刚刚发现了JSON,但我有一个问题,正确使用它。我真的找不到解决方案...基本上,我只是想计算我的数组元素(计数所有的DM),并包装在一个特定的元素(例如dM1)。JSON计数一个数组元素,并包装在
这里是我的代码,以便您能理解:http://jsfiddle.net/dRycS/9/
添加到什么@Pointy这里说的是修改代码: JSFiddle Demo
Object.size = function(obj) {
var size = 0, key;
for (key in obj) {
if (obj.hasOwnProperty(key)) size++;
}
return size;
};
var dMContent = {
"dM1" : [
{
"name" : "EeEeEeEe",
"link" : "http://test.com"
},
{
"name" : "FfFfFfFf",
"link" : "http://test.com"
},
{
"name" : "GgGgGgGg",
"link" : "http://test.com"
}
],
"dM2" : [
{
"name" : "EeEeEeEe",
"link" : "http://test.com"
},
{
"name" : "FfFfFfFf",
"link" : "http://test.com"
}
],
"dM3" : [
{
"name" : "EeEeEeEe",
"link" : "http://test.com"
}
]
};
var STORAGE = JSON.stringify(dMContent);
var parsed = JSON.parse(STORAGE);
// WHAT I WANT TO DO
// Count the number of dM
console.log(Object.size(parsed)); //gives you 3
//display the content
for(var i in parsed){
console.log('data in ' + i);
for(var j=0; j<parsed[i].length; j++){
console.log(parsed[i][j].name + ' ' + parsed[i][j].link);
}
}
你有什么有不数组;这是一个对象。数组对象做有一个“长度”属性,但对象不。
这并不清楚你想要什么;如果你想计算“dMContent”中每个对象的每个属性,你会写一些递归计数的东西。对于一个对象的单个“层”,这样的事情可能是你想要什么:
function objectSize(obj) {
var count = 0;
for (var k in obj) {
if (obj.hasOwnProperty(k)) ++count;
}
return count;
}
在你的代码dMContent
是一个对象,而不是一个数组。
要在对象计数的元素,这样做:
var i = 0;
for (x in parsed) {
if (parsed.hasOwnProperty(x)) {
i++;
}
}
alert(i);
我可以使用数组...我只是想找到最好的解决方案... – Sindar 2011-03-16 15:39:22
试试这个: 功能objectCount(OBJ ){
objectcount = 0;
$.each(obj, function(index, item) {
objectcount = objectcount + item.length;
});
return objectcount;
}
objectCount(obj); 其中obj是使用JSON数组作为子对象的JSON对象
但是最好是使用一个数组,所以不是?以及如何显示elem的内容? – Sindar 2011-03-16 15:40:56
@Sindar我已经更新了jsfiddle,并在底部显示了如何显示您的JSON。基本上我使用'for(var i in parsed)'来处理对象循环,就像处理关联数组一样 – kjy112 2011-03-16 16:03:49