帮忙优化一下代码,总觉得自己写的好麻烦,哪里不太对?

应该一次循环就能搞定吧

  let MondayTotal = 0;
  MondayTotal = newData.reduce((item, v) => {
    return item + parseFloat(v.Monday);
  }, MondayTotal);

  let TuesdayTotal = 0;
  TuesdayTotal = newData.reduce((item, v) => {
    return item + parseFloat(v.Tuesday);
  }, TuesdayTotal);

  let WednesdayTotal = 0;
  WednesdayTotal = newData.reduce((item, v) => {
    return item + parseFloat(v.Wednesday);
  }, WednesdayTotal);

  let ThursdayTotal = 0;
  ThursdayTotal = newData.reduce((item, v) => {
    return item + parseFloat(v.Thursday);
  }, ThursdayTotal);

  let FridayTotal = 0;
  FridayTotal = newData.reduce((item, v) => {
    return item + parseFloat(v.Friday);
  }, FridayTotal);

  let SaturdayTotal = 0;
  SaturdayTotal = newData.reduce((item, v) => {
    return item + parseFloat(v.Saturday);
  }, SaturdayTotal);

  let SundayTotal = 0;
  SundayTotal = newData.reduce((item, v) => {
    return item + parseFloat(v.Sunday);
  }, SundayTotal);
  
  
  
阅读 3k
4 个回答
const week = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']

const weekdata = week.map((day, idx) => newData.reduce((item, v) => item + parseFloat(v[day]), 0)

后面那块逻辑是按照你代码搬过来了,出问题不怪我 :)

var newDate = [];
            var weekAry = ['monday', 'tuesday', 'wednesday', 'thursday', 'friday'];
            newDate.reduce(function(pre, v) {
                for(var i = 0, len = weekAry.length; i < length; i++) {
                    if(!pre[weekAry[i]]) pre[weekAry[i]] = 0;
                    pre[weekAry[i]] += parseFloat(v[weekAry[i]]);
                }
                return pre;
            }, {});

没测试,将就看吧

安利一下柯里化

const getTotal = function (list) {
    return function (day) {
        return list.reduce((result, item) => (
            result + parseFloat(item[day])
        ), 0);
    };
}

const getWeekdayTotal = getTotal(newData);

// single day
let mondayTotal = getWeekdayTotal("Monday");
let tuesdayTotal = getWeekdayTotal("Tuesday");

// multiple days
let days = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'];
let daysTotal = days.map(getWeekdayTotal);

简化代码了,但是性能并没有提高

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题