js 数组分类重构(es6高阶函数:map()、reduce()、Set()等)

在今日RN开发过程中遇见了一个问题,接口返回数据未作处理,需要前端把数据处理一下,返回是以下这种格式:

msg:[
	{
	},
	{
	},
	....
]

而我需要以下这种格式:

msg:[
	"xxx":  " ",
	data: [
		{
		},
		{
		},
		....
	]
]

所用知识点(es6高阶函数):

  1. map()
  2. reduce()
  3. for(xxx of xxx)
  4. Set()
    以上函数具体详解请看菜鸟教程
    最后结果
let data =[{
		"Id": 6,
		"Member": "18831419865",
		"OrderNo": "GM20061215290001",
		"ShopNo": "ff808081729ced310172a7070c7a008f",
		"ProductName": null,
		"Price": 0.019999999552965164,
		"OrderUser": "ff80808172a71e0c0172a739407d0008",
		"MemType": "一级代理",
		"Spot": 0.02,
		"CommPrice": 0.00039999999105930331,
		"OrderDateTime": "2020-05-01T15:18:50.7844556",
		"CommInfo": "销售返佣"
	}, {
		"Id": 7,
		"Member": "18831419865",
		"OrderNo": "GM20061215290001",
		"ShopNo": "ff808081729ced310172a7070c7a008f",
		"ProductName": null,
		"Price": 0.019999999552965164,
		"OrderUser": "ff80808172a71e0c0172a739407d0008",
		"MemType": "一级代理",
		"Spot": 0.02,
		"CommPrice": 0.00039999999105930331,
		"OrderDateTime": "2020-05-01T15:18:54.7421313",
		"CommInfo": "销售返佣"
	}, {
		"Id": 8,
		"Member": "18831419865",
		"OrderNo": "GM20061215290001",
		"ShopNo": "ff808081729ced310172a7070c7a008f",
		"ProductName": null,
		"Price": 0.019999999552965164,
		"OrderUser": "ff80808172a71e0c0172a739407d0008",
		"MemType": "一级代理",
		"Spot": 0.02,
		"CommPrice": 0.00039999999105930331,
		"OrderDateTime": "2020-06-01T15:18:56.159198",
		"CommInfo": "销售返佣"
	}, {
		"Id": 9,
		"Member": "18831419865",
		"OrderNo": "GM20061215290001",
		"ShopNo": "ff808081729ced310172a7070c7a008f",
		"ProductName": null,
		"Price": 0.019999999552965164,
		"OrderUser": "ff80808172a71e0c0172a739407d0008",
		"MemType": "一级代理",
		"Spot": 0.02,
		"CommPrice": 0.00039999999105930331,
		"OrderDateTime": "2020-06-01T15:22:07.3859633",
		"CommInfo": "销售返佣"
	}, {
		"Id": 10,
		"Member": "18831419865",
		"OrderNo": "GM20061215290001",
		"ShopNo": "ff808081729ced310172a7070c7a008f",
		"ProductName": null,
		"Price": 1000.0,
		"OrderUser": "ff80808172a71e0c0172a739407d0008",
		"MemType": "一级代理",
		"Spot": 0.02,
		"CommPrice": 20.0,
		"OrderDateTime": "2020-08-01T15:24:41.5155469",
		"CommInfo": "销售返佣"
	}, {
		"Id": 11,
		"Member": "18831419865",
		"OrderNo": "GM20061215290001", //订单编号
		"ShopNo": "ff808081729ced310172a7070c7a008f",
		"ProductName": null,
		"Price": 1000.0,
		"OrderUser": "ff80808172a71e0c0172a739407d0008",
		"MemType": "一级代理",
		"Spot": 0.02,
		"CommPrice": 20.0,
		"OrderDateTime": "2020-09-01T15:24:45.5638624",
		"CommInfo": "销售返佣"
	}]
let dateList = (data) => {
		// 创建空数组
		let dataList = []  
		// 循环遍历元数据提起日期(map()函数相当于数组深复制)
		let dateLists = data.map((item)=>
			// 我的元数据日期格式,提取年月日
			return item.OrderDateTime.substring(0,10)
		})
		// 将日期的数组进行查重,for循环遍历
		for(item of [...new Set(dateLists)]){
			// 创建一个空数组(笔者需要数据相当于数组嵌套数组格式)
			let a = []
			for(i of data){
				if(item == i.OrderDateTime.substring(0,10)){
					a.push(i)
					dataList.push({title:item,data:a})
				}
			}
		}
		// 以下步骤是将数组中的对象去重
		let hash = {};
		return dataList = dataList.reduce((item,next)=>{
			hash[next.title] ? '' : hash[next.title] = true && item.push(next);
			return item
		},[])
	}
	console.log(dateList(data));

最后打印结果:
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值