Javascript (JQuery)将数组处理为汇总数据的最优算法

Optimal algorithm for Javascript (JQuery) processing of array into summary data

本文关键字:数据 最优算法 处理 JQuery 数组 Javascript      更新时间:2023-09-26

我有(n) JSON编码的技能集对象,我需要能够获得有意义的汇总信息,以便按组、类别、资源和能力分组显示。考虑到我已经必须解析DOM以剥离数据,那么处理该数据以减少客户端影响的最佳方法是什么?

注意:数据集不超过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的提取变换负载:

  • informatica Powercenter Capability Weighting = 5

  • IBM Datastage Capability Weighting = 15

  • Microsoft SSIS Capability Weighting = 5

  • Ab Initio Capability权重= 15

或:-

对于能力权重为n = X + y + z的资源X

  • Technologies: Extract Transform Load Capability Weighting = x

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

  • 技术:数据仓库能力权重= z

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

您可以遍历N个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.