有问题为什么拆分功能不起作用

时间:2016-11-10 09:04:26

标签: javascript

我正在尝试拆分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);

3 个答案:

答案 0 :(得分:0)

您可以使用Array.prototype.reduce()

执行以下操作

&#13;
&#13;
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;
&#13;
&#13;

答案 1 :(得分:0)

您可以使用您的迭代结构,您已经拥有。然后将department属性作为实际部门并计算销售属性。

&#13;
&#13;
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;
&#13;
&#13;

上面的山姆用Array#forEach更简洁的风格。

&#13;
&#13;
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;
&#13;
&#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获取其值

相关问题