2011-03-16 38 views

回答

3

添加到什麼@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); 
    } 
} 
+0

但是最好是使用一個數組,所以不是?以及如何顯示elem的內容? – Sindar 2011-03-16 15:40:56

+0

@Sindar我已經更新了jsfiddle,並在底部顯示瞭如何顯示您的JSON。基本上我使用'for(var i in parsed)'來處理對象循環,就像處理關聯數組一樣 – kjy112 2011-03-16 16:03:49

3

你有什麼有數組;這是一個對象。數組對象有一個「長度」屬性,但對象不。

這並不清楚你想要什麼;如果你想計算「dMContent」中每個對象的每個屬性,你會寫一些遞歸計數的東西。對於一個對象的單個「層」,這樣的事情可能是你想要什麼:

function objectSize(obj) { 
    var count = 0; 
    for (var k in obj) { 
    if (obj.hasOwnProperty(k)) ++count; 
    } 
    return count; 
} 
+0

+1也是他JSON是在這裏的jsfiddle無效是更新http://jsfiddle.net/kjy112/dRycS/10/ – kjy112 2011-03-16 15:35:40

+0

我想要的是,知道他們有多少dM,在這裏3.如果我給dM1,知道他所有的名字和鏈接。 – Sindar 2011-03-16 15:36:33

+0

那麼外部對象的「大小」就是那個小函數返回的值。要獲得「內部」對象的大小,您只需調用該函數並傳入其中一個。 – Pointy 2011-03-16 15:38:53

0

在你的代碼dMContent是一個對象,而不是一個數組。

要在對象計數的元素,這樣做:

var i = 0; 
for (x in parsed) { 
    if (parsed.hasOwnProperty(x)) { 
     i++; 
    } 
} 
alert(i); 
+0

我可以使用數組...我只是想找到最好的解決方案... – Sindar 2011-03-16 15:39:22

0

試試這個: 功能objectCount(OBJ ){

objectcount = 0; 
$.each(obj, function(index, item) { 
    objectcount = objectcount + item.length; 
}); 
return objectcount; 
} 

objectCount(obj); 其中obj是使用JSON數組作爲子對象的JSON對象