2011-12-01 55 views
0

我有(n)JSON编码的技能组对象,我需要能够派生出有意义的摘要信息以供显示,按组,类别,资源分组能力。考虑到我已经必须解析DOM去除数据,处理这些数据以减少客户端影响的最佳方式是什么?用于Javascript(JQuery)将数组处理为摘要数据的最佳算法

N.B.数据集不超过5000条记录。

例如

@{"resource" : "","group" : "Technologies","category" : "Extract Transform Load","skill" : "Informatica Powercenter","capabilityWeighting" : 1} 
@{"resource" : "","group" : "Technologies","category" : "Extract Transform Load","skill" : "IBM Datastage","capabilityWeighting" : 0} 
@{"resource" : "","group" : "Technologies","category" : "Extract Transform Load","skill" : "Microsoft SSIS","capabilityWeighting" : 4} 
@{"resource" : "","group" : "Technologies","category" : "Extract Transform Load","skill" : "Ab Initio","capabilityWeighting" : 15} 
@{"resource" : "","group" : "Technologies","category" : "Extract Transform Load","skill" : "Informatica Powercenter","capabilityWeighting" : 4} 
@{"resource" : "","group" : "Technologies","category" : "Extract Transform Load","skill" : "IBM Datastage","capabilityWeighting" : 15} 
@{"resource" : "","group" : "Technologies","category" : "Extract Transform Load","skill" : "Microsoft SSIS","capabilityWeighting" : 1} 

总结于: -

对于提取转换负载具有40能力加权:

  • Infomatica的PowerCenter能力加权= 5

  • IBM的DataStage能力加权= 15

  • 微型软SSIS能力加权= 5

  • 从头算能力加权= 15

或: -

对于资源X在n = X + Y + Z的能力加权

  • 技术:提取变换负载能力权重= x

  • 种技术:商业智能能力权重= Y

  • 技术:数据仓库性能权重= Z

回答

0

如果你想这样做,在客户端,我只想用简单的哈希表(字典),以计算摘要。

0

,你可以通过你的ňJSON编码的对象,保持流水账摘要对象循环:

var data = [ 
    {"resource": "", "group": "Technologies", "category": "Extract Transform Load", "skill": "Informatica Powercenter", "capabilityWeighting": 1}, 
    {"resource": "", "group": "Technologies", "category": "Extract Transform Load", "skill": "IBM Datastage", "capabilityWeighting": 0}, 
    {"resource": "", "group": "Technologies", "category": "Extract Transform Load", "skill": "Microsoft SSIS", "capabilityWeighting": 4}, 
    {"resource": "", "group": "Technologies", "category": "Extract Transform Load", "skill": "Ab Initio", "capabilityWeighting": 15}, 
    {"resource": "", "group": "Technologies", "category": "Extract Transform Load", "skill": "Informatica Powercenter", "capabilityWeighting": 4}, 
    {"resource": "", "group": "Technologies", "category": "Extract Transform Load", "skill": "IBM Datastage", "capabilityWeighting": 15}, 
    {"resource": "", "group": "Technologies", "category": "Extract Transform Load", "skill": "Microsoft SSIS", "capabilityWeighting": 1} 
]; 

var summary = {}; 

for (var i = 0, c = data.length; i < c; i += 1) { 
    var row = data[i]; 
    if (!summary.hasOwnProperty(row.category)) summary[row.category] = { skills: {}, total: 0 }; 
    if (!summary[row.category].skills.hasOwnProperty(row.skill)) summary[row.category].skills[row.skill] = 0; 
    summary[row.category].skills[row.skill] += row.capabilityWeighting; 
    summary[row.category].total += row.capabilityWeighting; 
} 

// "summary" now has all the data summarized as you need. 
// You just need to loop through it and output using whatever phrasing you want.