0

需要展示出一天中所有小时的数据,后端返回的数据是这样
beforData: [

  {
    "time_hours": "09", // 时间
    "approved_amount": 28068.0,
    "pass_rate": 1.0
  },
  {
    "time_hours":"10",
    "approved_amount":0.0,
    "pass_rate":0.0
  },
  {
    "time_hours":"11",
    "approved_amount":42706.0,
    "pass_rate":0.5
  },
  {
    "time_hours":"13",
    "approved_amount":0.0,
    "pass_rate":0.0
  },
  {
    "time_hours":"15",
    "approved_amount":37700.0,
    "pass_rate":0.5714285714
  },
  {
    "time_hours":"16",
    "approved_amount":0.0,
    "pass_rate":0.0
  },
  {
    "time_hours":"17",
    "approved_amount":29520.0,
    "pass_rate":0.6
  },
  {
    "time_hours":"18",
    "approved_amount":0.0,
    "pass_rate":0.0
  },{
    "time_hours":"19",
    "approved_amount":56216.0,
    "pass_rate":1.0
  },
  {
    "time_hours":"22",
    "approved_amount":5800.0,
    "pass_rate":1.0
  },
  {
    "time_hours":"23",
    "approved_amount":0.0,
    "pass_rate":0.0
  }
]

需要将缺少的小时补全,转化成
[

  {
    "time_hours": "01:00",
    "approved_amount": null,
    "pass_rate": null,
  },
  {
    "time_hours": "02:00",
    "approved_amount": null,
    "pass_rate": null,
  },
  {
    "time_hours": "03:00",
    "approved_amount": null,
    "pass_rate": null,
  },
  {
    "time_hours": "04:00",
    "approved_amount": null,
    "pass_rate": null,
  },
  {
    "time_hours": "05:00",
    "approved_amount": null,
    "pass_rate": null,
  },
  {
    "time_hours": "06:00",
    "approved_amount": null,
    "pass_rate": null,
  },
  {
    "time_hours": "07:00",
    "approved_amount": null,
    "pass_rate": null,
  },
  {
    "time_hours": "08:00",
    "approved_amount": null,
    "pass_rate": null,
  },
  {
    "time_hours": "09:00",
    "approved_amount": 28068.0,
    "pass_rate": 1.0
  },
  {
    "time_hours":"10:00",
    "approved_amount":0.0,
    "pass_rate":0.0
  },
  {
    "time_hours":"11:00",
    "approved_amount":42706.0,
    "pass_rate":0.5
  },
  {
    "time_hours": "12:00",
    "approved_amount": null,
    "pass_rate": null,
  },
  {
    "time_hours":"13:00",
    "approved_amount":0.0,
    "pass_rate":0.0
  },
  {
    "time_hours": "14:00",
    "approved_amount": null,
    "pass_rate": null,
  },
  {
    "time_hours":"15:00",
    "approved_amount":37700.0,
    "pass_rate":0.5714285714
  },
  {
    "time_hours":"16:00",
    "approved_amount":0.0,
    "pass_rate":0.0
  },
  {
    "time_hours":"17:00",
    "approved_amount":29520.0,
    "pass_rate":0.6
  },
  {
    "time_hours":"18:00",
    "approved_amount":0.0,
    "pass_rate":0.0
  },{
    "time_hours":"19:00",
    "approved_amount":56216.0,
    "pass_rate":1.0
  },
  {
    "time_hours": "20:00",
    "approved_amount": null,
    "pass_rate": null,
  },
  {
    "time_hours": "21:00",
    "approved_amount": null,
    "pass_rate": null,
  },
  {
    "time_hours":"22:00",
    "approved_amount":5800.0,
    "pass_rate":1.0
  },
  {
    "time_hours":"23:00",
    "approved_amount":0.0,
    "pass_rate":0.0
  },
  {
    "time_hours": "00:00",
    "approved_amount": null,
    "pass_rate": null,
  },
]
这样的,请教一下大家这个要怎么做啊?
HAHA_EN 51
2018-07-12 提问

查看全部 5 个回答

2

补充一个线性时间复杂度的

function getFullRange (beforeData) {
  return beforeData
    .reduce((arr, item) => {
      arr[+item.time_hours] = item
      return arr
    }, [...new Array(24)])
    .map((item, i) => {
      if (!item) {
        item = {
          time_hours: String(i),
          approved_amount: null,
          pass_rate: null,
        }
      }
      item.time_hours = item.time_hours.padStart(2, '0') + ':00'
      return item
    })
}

推荐答案

1

已采纳

不谢,拿走:

const beforeData = [{
  "time_hours": "09", // 时间
  "approved_amount": 28068.0,
  "pass_rate": 1.0
}];

const result = Array.from({length: 24}, (v, i) => i).map(hour => {
  let obj = beforeData.filter(has => Number(has.time_hours) === hour)[0] || {};
  return {
    time_hours: `${`00${hour}`.slice(-2)}:00`,
    approved_amount: obj.approved_amount || null,
    pass_rate: obj.pass_rate || null
  };
});

console.log(result);

就这么简单~~~

你可能感兴趣的

推广链接