计算JavaScript对象中的属性数

时间:2011-11-22 15:14:54

标签: javascript ruby count nodes

所以我有这个使用arborjs显示树结构的JavaScript文字。

var data = {
    "nodes": {
        You: {
            'color': 'green',
            'shape': 'dot',
            'label': 'You'
        },
        Ben: {
            'color': 'black',
            'shape': 'dot',
            'label': 'Ben'
        },
        David: {
            'color': 'black',
            'shape': 'dot',
            'label': 'David'
        }
    },
    "edges": {
        You: {
            Ben: {},
            David: {}
        },
        Ben: {
            David: {}
        }
    }
};

我想计算nodes对象中的属性数(本例中为3)和edge对象中的属性数(本例中为2),以显示用户树的一些统计信息。我通过递归遍历我的数据库并创建一个哈希来使用ruby on rails输出数据变量。但之前,我应该计算客户端或服务器端的节点吗?我应该再次检查数据库并统计统计数据还是只计算属性?

2 个答案:

答案 0 :(得分:3)

计算你可以做的节点

var count=0;
for(node in data.nodes)
    count++; 

答案 1 :(得分:1)

你可以这样做:

var data = {
                   "nodes":{
                    "You":{'color':'green','shape':'dot','label':'You'},
                     Ben:{'color':'black','shape':'dot','label':'Ben'},
                     David:{'color':'black','shape':'dot','label':'David'}
                   }, 
                   "edges":{
                     You:{ Ben:{}, David:{} },
                     Ben:{ David:{}}
                   }
                 };
Object.prototype.NosayrCount = function () {
    var count = 0;
    for(var i in this)
        if (this.hasOwnProperty(i))
            count++;
    return count;
}

data.NosayrCount(); // 2
data.Nodes.NosayrCount(); // 3
data.edges.NosayrCount(); // 2