javascript如何快速获取员工数组中报告的总数

提拉米苏

我需要确定经理必须在d3树状图可视化中指定正方形大小的报告总数。数据是具有209000条记录的csv文件,并使用以下列标题进行格式化:Employee,EmployeeID和ManagerID。

我必须找到的数字包括直接和间接报告-经理ID等于经理的雇员ID的人和向该较低级别的经理报告的人,以及所有报告的公司阶梯。

var i, theLength, j, thejLength, k, thekLength;
var runningCount = 0;
function getReportCount(csvAll, employeeId, employee) {
  var csvAllModified = csvAll.filter(function(d) {
      return (d.ManagerID == employeeId);
  });
  runningCount+= csvAllModified.length;
    i=0
    theLength = csvAllModified.length;
    for(; i < theLength; i++){ // LOOP THROUGH ONE LEVEL REPORTS
        //GET REPORTS TWO LEVEL BELOW
        csvAllModified2 = csvAll.filter(function(d) {
          return (d.ManagerID == csvAllModified[i].EmployeeID);
        });     
        //managerIds.push(csvAllModified[i].EmployeeID);
        runningCount += csvAllModified2.length;
        j=0;
        thejLength = csvAllModified2.length;
        for(; j < thejLength; j++ ){
            //GET REPORTS THREE LEVELS BELOW
            csvAllModified3 = csvAll.filter(function(d) {
              return (d.ManagerID == csvAllModified2[j].EmployeeID);
            });
            runningCount += csvAllModified3.length;
            k=0;
            thekLength = csvAllModified3.length;
            for(; k < thekLength; k++) {
                //console.log('Employee name 3 levels below: ' +         csvAllModified3[k].Employee); 
                csvAllModified4 = csvAll.filter(function(d) {
                  return (d.ManagerID == csvAllModified3[k].EmployeeID);
                });
                runningCount += csvAllModified4.length;
            }
        }
    }
  return runningCount
}

我的问题是:如何构造上面的代码,使其运行效率更高?目前,要花几分钟时间才能运行。而且我还必须添加几个管理层来获得最终的总数。

雪莉

您的代码很慢,因为您多次遍历大数组。您想找到一种不必多次遍历原始数组的方法。在这种情况下,我将使用csvAll.map(...)创建可以直接引用报表的哈希,以便可以使用report [employeeID]选择报表。这样,您只需要循环一次即可创建哈希图,而只需循环一次即可找到初始的managerID。之后,您可以直接引用每个报表,而不必再次循环。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Swift中报告成就?

来自分类Dev

如何在Flutter中报告无声崩溃

来自分类Dev

如何让eclipse在可完成的期货中报告未报告的异常?

来自分类Dev

如何快速从数组中的数组获取数据

来自分类Dev

如何获得工资等级的员工总数

来自分类Dev

如何防止滚动条在开发环境中报告错误?

来自分类Dev

我如何在SML / NJ中报告未处理的异常?

来自分类Dev

如何在afex函数中报告来自mixed(MODEL)的结果?

来自分类Dev

如何在Process Explorer中报告和表示RAM?

来自分类Dev

如何创建限制为仅在OBIEE中报告数据的提示?

来自分类Dev

在mongodb中报告

来自分类Dev

添加“对象的JavaScript数组”属性值以获取总数

来自分类Dev

如何快速从数组中获取对象

来自分类Dev

如何从数组中快速获取对象索引

来自分类Dev

如何快速获取类型字典数组的键

来自分类Dev

获取JavaScript表格的总数

来自分类Dev

如何在量角器报告中报告自定义消息?

来自分类Dev

在for循环中报告进度

来自分类Dev

SQL中报告的输入参数

来自分类Dev

了解Firebase中报告的数据

来自分类Dev

在for循环中报告进度

来自分类Dev

登录的员工总数

来自分类Dev

Android 4.4 浏览器在数组推送方法中报告意外标识符

来自分类Dev

Javascript:如何计算总数

来自分类Dev

如何使用存储的时间戳数据计算每个月的报告总数并以 json 数组格式输出

来自分类Dev

如何在新数组中获取Php多维数组相同键的相同值的相关总数?

来自分类Dev

javascript-日期上的angularjs $ valid在firefox中报告不正确

来自分类Dev

如何获得对象的总数组

来自分类Dev

如何获取项目的总数?

Related 相关文章

热门标签

归档