1.首先上数组。
var arr = [ {name:'小米1', value: 1, type: 2, date: '2018-06-07T08:00:01.589Z' }, {name:'锤子T1', value: 1, type: 2, date: '2018-06-07T08:10:01.589Z' }, {name:'小米2', value: 1, type: 4, date: '2018-06-07T20:00:01.589Z' }, {name:'小米2', value: 4, type: 4, date: '2018-06-07T20:10:21.189Z' }, {name:'小米4', value: 1, type: 4, date: '2018-06-07T08:00:01.560Z' }, {name:'小米4', value: 2, type: 4, date: '2018-06-07T08:10:31.584Z' }, {name:'小米6', value: 1, type: 3, date: '2018-06-07T08:00:01.589Z' }, {name:'小米5s',value: 1, type: 4, date: '2018-06-07T08:00:01.589Z' }, {name:'锤子T2', value: 1, type: 4, date: '2018-06-07T08:00:01.589Z' }, {name:'锤子T1', value: 4, type: 4, date: '2018-06-07T08:06:01.589Z' }, {name:'魅蓝note5', value: 1, type: 4, date: '2018-06-07T08:00:01.589Z' }, {name:'魅蓝note2', value: 5, type: 4, date: '2018-06-02T08:07:01.589Z' }, {name:'魅蓝note2', value: 6, type: 4, date: '2018-06-07T08:00:01.589Z' }, {name:'魅蓝note3', value: 1, type: 4, date: '2018-06-05T08:00:01.589Z' }, {name:'魅蓝note', value: 1, type: 4, date: '2018-06-07T08:00:01.589Z' }, {name:'oppor9', value: 7, type: 4, date: '2018-06-04T08:04:01.588Z' }, {name:'华为p9', value: 1, type: 4, date: '2018-06-02T08:00:01.577Z' }, {name:'华为p9', value: 2, type: 4, date: '2018-06-07T08:00:01.110Z' }, {name:'华为p10', value: 1, type: 1, date: '2018-06-07T08:00:01.534Z' }];
2.题目: <1>请用您认为最优化的方式,将arr中的type为4的数据过滤出来,
<2>然后按相同的 name + date(按天)合并value(value累加),
<3>然后按 value 降序(从大到小)排序,
<4>最后每行按照 "${name},${本地日期},售出${sum(value)}部" 的格式,如:"小米2,2017年06月08日,售出5部", 打印(console.log)出来。
3.-----------------------------先思考---------------------答案在下------------------------------
4.答案:(不是标准,但是可以的)
function printArr(arr){ var newArr = arr.filter((item)=>{ let darr = item.date.substring(0,10).split('-'); item.date = `${darr[0]}年${darr[1]}月${darr[2]}日` return item.type == 4 }) var map = newArr.reduce((obj,item)=>{ let key = item.name +"+"+item.date; obj[key] = item.value +(obj[key]|| 0) return obj },{}) stateArr = [] for(let item in map){ var nowobj = {name:item.split('+')[0],date:item.split('+')[1],value:map[item]} stateArr.push(nowobj) } var sortArr = stateArr.sort((a,b)=>{ return b.value - a.value }) sortArr.forEach((item)=>{ console.log(`${item.name},${item.date},售出${item.value}部`) }) } printArr(arr)
5.控制台效果