javascript如何快速获取员工数组中的报表总数
javascript how to quickly get total count of reports in employee array
我需要确定经理必须在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(…(创建一个哈希,您可以直接在中引用报表,这样您就可以使用reports[employeeID]来选择报表。这样,您只需要循环一次就可以创建hashmap,循环一次就能找到初始managerID。A之后,您可以直接引用每个报告,而不必再次循环。
相关文章:
- 如何在映射数组中添加换行符
- javascript结合了数组和字典
- 需要帮助设置json数组
- 不能从angular2中的子组件指定父组件中的数组
- 使用JS将数组转换为json对象
- 数组在递归方法中设置为null
- knockoutjs可观察数组
- Javascript-如何读取json文件中的列并将其保存在Javascript数组中
- 将数组从PHP传递到Javascript
- JavaScript数组排序(函数)用于对表行进行排序,而不是排序
- 在函数中添加数组元素的数值
- 无法通过数组映射绑定
- javascript中的数组出错
- 如何使用 node.js 比较两个 json 数组
- Javascript(Angular)从一个对象数组到第二个数组查找值
- 根据id将json数组组合为一个json数组
- 如何通过数组更新角度子范围
- 有没有一种方法可以添加相同的项目val=“0”;4〃;到JavaScript中数组的每个对象
- 在Javascript中转换对象数组
- javascript如何快速获取员工数组中的报表总数