繁体   English   中英

无法显示室外变量

[英]Having trouble displaying the outdoor variable

该循环假定是让我将数组存储在对象Map中,并向我展示室外是最赚钱的部门。

我想运行一个遍历数组的循环,只是在再次访问地图中的数据以及部门获得最高利润值(销售)时遇到麻烦。

例如,将所有户外销售,硬件和木工结合起来,得出总计和console.log最高的“室外”。

  var salesData = [{ department: 'hardware', sales: 4500, day: 'Monday' }, { department: 'outdoor', sales: 1500, day: 'Monday' }, { department: 'carpentry', sales: 5500, day: 'Monday' }, { department: 'hardware', sales: 7500, day: 'Tuesday' }, { department: 'outdoor', sales: 2505, day: 'Tuesday' }, { department: 'carpentry', sales: 1540, day: 'Tuesday' }, { department: 'hardware', sales: 1500, day: 'Wednesday' }, { department: 'outdoor', sales: 8507, day: 'Wednesday' }, { department: 'carpentry', sales: 8009, day: 'Wednesday' }, { department: 'hardware', sales: 12000, day: 'Thursday' }, { department: 'outdoor', sales: 18007, day: 'Thursday' }, { department: 'carpentry', sales: 6109, day: 'Thursday' }, { department: 'hardware', sales: 7005, day: 'Friday' }, { department: 'outdoor', sales: 12006, day: 'Friday' }, { department: 'carpentry', sales: 16109, day: 'Friday' }]; var departmentMap = {}; var high = ""; function mostProfitableDepartment(salesList) { for (var i = 0; i < salesList.length; i++) { var currentDep = salesList[i]; if (departmentMap[currentDep] === undefined) { departmentMap[currentDep] = 0; } departmentMap[currentDep] = departmentMap[currentDep] + 1 } console.log(departmentMap); } mostProfitableDepartment(salesData); for (var depHigh in departmentMap) { if (departmentMap[depHigh] > high) { high = departmentMap[depHigh] } } console.log(high); 

 var salesData = [ {department : 'hardware', sales : 4500, day : 'Monday'}, {department : 'outdoor', sales : 1500, day : 'Monday'}, {department : 'carpentry', sales : 5500, day : 'Monday'}, {department : 'hardware', sales : 7500, day : 'Tuesday'}, {department : 'outdoor', sales : 2505, day : 'Tuesday'}, {department : 'carpentry', sales : 1540, day : 'Tuesday'}, {department : 'hardware', sales : 1500, day : 'Wednesday'}, {department : 'outdoor', sales : 8507, day : 'Wednesday'}, {department : 'carpentry', sales : 8009, day : 'Wednesday'}, {department : 'hardware', sales : 12000, day : 'Thursday'}, {department : 'outdoor', sales : 18007, day : 'Thursday'}, {department : 'carpentry', sales : 6109, day : 'Thursday'}, {department : 'hardware', sales : 7005, day : 'Friday'}, {department : 'outdoor', sales : 12006, day : 'Friday'}, {department : 'carpentry', sales : 16109, day : 'Friday'}, ]; // Build a obj map and sum up the sales of each department var sales = salesData.reduce((obj, a) => { obj[a.department] = (obj[a.department] || 0) + a.sales return obj }, {}) // Figure out which department is the highest var high = Object.keys(sales).reduce((a, b) => sales[a] > sales[b] ? a : b ) console.log(sales) console.log(high, sales[high]) 

您可以如下组合使用.reduce调用。

 var salesData = [{ department: 'hardware', sales: 4500, day: 'Monday' }, { department: 'outdoor', sales: 1500, day: 'Monday' }, { department: 'carpentry', sales: 5500, day: 'Monday' }, { department: 'hardware', sales: 7500, day: 'Tuesday' }, { department: 'outdoor', sales: 2505, day: 'Tuesday' }, { department: 'carpentry', sales: 1540, day: 'Tuesday' }, { department: 'hardware', sales: 1500, day: 'Wednesday' }, { department: 'outdoor', sales: 8507, day: 'Wednesday' }, { department: 'carpentry', sales: 8009, day: 'Wednesday' }, { department: 'hardware', sales: 12000, day: 'Thursday' }, { department: 'outdoor', sales: 18007, day: 'Thursday' }, { department: 'carpentry', sales: 6109, day: 'Thursday' }, { department: 'hardware', sales: 7005, day: 'Friday' }, { department: 'outdoor', sales: 12006, day: 'Friday' }, { department: 'carpentry', sales: 16109, day: 'Friday' }]; var aggregated = salesData.reduce(function(p,c){ if(p[c.department] == undefined) p[c.department] = 0; p[c.department]+= c.sales; return p; },{}); console.log("total sales",aggregated); var highest = Object.keys(aggregated).reduce(function(p,c){ if(aggregated[c]>p.value) return {key:c,value:aggregated[c]} return p; },{key:'notset',value:0}); console.log("best department", highest); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM