嗯,我剛剛發現了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