我正在尝试拆分salesData,并希望在每个对象之后用逗号表示split()
。
这是家庭作业。我正在尝试将其存储在对象图中并在那里进行计算。
现在我无法通过split
功能让我失望。
我在下面提供了我的代码,以显示最有利可图的部门的最终结果。
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 = {};
function mostProfitableDepartment() {
var departmentSplit = salesData.split(',');
for (var i = 0; i < departmentSplit.length; i++) {
var currentDep = departmentSplit[i]
if (departmentMap[currentDep] === undefined) {
departmentMap[currentDep] = 0;
}
departmentMap[currentDep] = departmentMap[currentDep]++
}
console.log(departmentMap);
}mostProfitableDepartment(salesData);
答案 0 :(得分:0)
您可以使用Array.prototype.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'},
],
deptMap = salesData.reduce((p,c) => p[c.department] ? (p[c.department].push({sales: c.sales,
day: c.day}),p)
: (p[c.department] = [{sales: c.sales,
day: c.day}],p) ,{});
console.log(deptMap);
&#13;
答案 1 :(得分:0)
您可以使用您的迭代结构,您已经拥有。然后将department属性作为实际部门并计算销售属性。
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' }],
departmentMap = {};
function mostProfitableDepartment() {
var currentDep, i;
for (i = 0; i < salesData.length; i++) {
currentDep = salesData[i].department;
if (!departmentMap[currentDep]) {
departmentMap[currentDep] = 0;
}
departmentMap[currentDep] += salesData[i].sales;
}
}
mostProfitableDepartment(salesData);
console.log(departmentMap);
&#13;
上面的山姆用Array#forEach
更简洁的风格。
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' }],
departmentMap = {};
function mostProfitableDepartment() {
salesData.forEach(function (item) {
departmentMap[item.department] = (departmentMap[item.department] || 0 ) + item.sales;
});
}
mostProfitableDepartment(salesData);
console.log(departmentMap);
&#13;
答案 2 :(得分:0)
我想你想要这样的东西
var departments = [];
angular.forEach(salesData, function (d) {
if(departments[d.department]){
departments[d.department] = departments[d.department] + d.sales;
}else{
departments[d.department] = d.sales;
}
});
换句话说,您可以将salesData视为json,并使用foreach获取其值