JSON计算一个Array元素并包装

时间:2011-03-16 15:30:04

标签: javascript jquery json

我今天刚刚发现了JSON但是我正确地使用它时遇到了问题。我真的找不到解决方案......

基本上,我只想计算数组的元素(计算所有dM),并包装特定元素(例如dM1)。

以下是我的代码,以便您了解:http://jsfiddle.net/dRycS/9/

4 个答案:

答案 0 :(得分:3)

你所拥有的是数组;它是一个对象。数组对象执行具有“长度”属性,但对象不具有。

目前尚不清楚你想要什么;如果你想计算“dMContent”中每个对象的每个属性,你就会写一些东西来递归计算。对于对象的单个“层”,这样的东西可能是你想要的:

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

答案 1 :(得分: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);
    }
}

答案 2 :(得分:0)

在您的代码dMContent中是一个Object,而不是一个数组。

要计算Object中的元素,请执行以下操作:

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

答案 3 :(得分:0)

试试这个:     function objectCount(obj){

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

objectCount(OBJ); 其中obj是一个json对象,json数组作为子对象