排序,去重,重组

时间排序

时间排序要先把时间的时间戳算出来,然后添加到对象中。再进行比较,例:

var list = [{
					date: '2020-11-12',
					name: 'aa'
				},
				{
					date: '2020-10-12',
					name: 'aad'
				},
				{
					date: '2020-11-13',
					name: 'as'
				},
				{
					date: '2019-11-15',
					name: 'aw'
				},
				{
					date: '2020-09-12',
					name: 'av'
				},
				{
					date: '2020-11-11',
					name: 'ad'
				},

			]

			list.forEach(function(item, index) {
				// var date = (new Date(item.date).getTime())
				var a = new Date(item.date);
				var date = a.getTime(); // 遍历到时间戳
				list[index]['time'] = date // 给对象添加时间戳属性
			})
			list.sort(function(a,b){
				return a.time - b.time // 按照时间戳排序
			})
			for(var i = 0; i<list.length;i++){
				delete list[i]['time'] // 如果比较完之后不需要时间戳属性可以删除
			}
			console.log(list) // 输出排序过后的数组

去重并计算每个元素重复出现多少次

首先我们要过滤出数组中不重复的键作为对象的键

var arr = ['a', 'b', 'c', 'a', 'b', 'd'];
			var res = [];
			res = arr.filter(function(item,index,array){
				return array.indexOf(item) === index; //遍历出不重复的元素作为obj的键
			})
			console.log(res)

然后让去重后的数组中的元素作为对象的key并赋值为0

var obj = {};
			for(var i = 0;i<res.length;i++){
				obj[res[i]] = 0;  //让res中的元素作为key并赋初始值为0
			}

然后在原数组中遍历对象,遍历到一次自加一次,就可以看到每个元素出现了几次

for(var i =0;i<arr.length;i++){
				for(var x in obj){
					if(x == arr[i]){
						++obj[x]; //每次相等进入此判断加1,表示出现了几次
					}
				}
			}
			console.log(obj)

数据重组

var data = [{
					Id: 1,
					title: "手冲咖啡6杯装(定制款)",
					price: "59",
					mack: '<span style="color: #FFFFFF;background: #AB7FD1; border-color: #AB7FD1">&#x7206;&#x54C1;</span>',
					nice: "1742",
					img_list_url: "http://bfs.biyao.com/group1/M00/C8/19/rBACYVzH_sGAfrzRAAA8joHI5YU396.jpg",
					type_one: "咖啡",
					type_two: "手冲咖啡",
				},
				{
					Id: 1,
					title: "伯爵咖啡",
					price: "59",
					mack: '<span style="color: #FFFFFF;background: #AB7FD1; border-color: #AB7FD1">&#x7206;&#x54C1;</span>',
					nice: "1742",
					img_list_url: "http://bfs.biyao.com/group1/M00/C8/19/rBACYVzH_sGAfrzRAAA8joHI5YU396.jpg",
					type_one: "咖啡",
					type_two: "手冲咖啡",
				},
				{
					Id: 2,
					title: "ANNY法式深焙袋冲咖啡2袋",
					price: "39",
					mack: '<span style="color: #FB4C81;background: ; border-color: #FB4C81">&#x4E00;&#x8D77;&#x62FC;</span>',
					nice: "910",
					img_list_url: "http://bfs.biyao.com/group1/M00/51/BA/rBACW1uFacCAShDcAAA5qDQqJDo607.jpg",
					type_one: "咖啡",
					type_two: "咖啡粉",
				},
				{
					Id: 2,
					title: "鹊桥咖啡",
					price: "39",
					mack: '<span style="color: #FB4C81;background: ; border-color: #FB4C81">&#x4E00;&#x8D77;&#x62FC;</span>',
					nice: "910",
					img_list_url: "http://bfs.biyao.com/group1/M00/51/BA/rBACW1uFacCAShDcAAA5qDQqJDo607.jpg",
					type_one: "咖啡",
					type_two: "咖啡粉",
				},
			];

遍历出type_two元素的值并存放在新数组中

var res = [];
			var type_two = [];
			for(var i = 0;i<data.length;i++){
				var two = data[i].type_two;
				type_two.push(two)
			}

去除重复的type_two值,准备做数组中的对象的分类标志

var type_two = type_two.filter(function(item,index,array){
				return type_two.indexOf(item) === index;
			})

遍历type数组并创建新的对象存放type_two属性并赋值为去重后的type_two值,然后创建一个新属性用于存放过滤出的原数组的type_two值与对象中type_two值相同的元素

for(var i = 0;i<type_two.length;i++){
				var obj = {};
				obj.type_two = type_two[i] // 创建新属性,赋值为type_two数组中的元素
				obj.list = data.filter(function(item){
					return item.type_two === type_two[i] // 过滤出满足条件的元素返回给新属性
				})
				res.push(obj) // 循环一次后将添加属性后的obj添加到res数组中
			}
			console.log(res)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值