2011-03-16 36 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对象