第一种:按照某个属性值(全等分)
var a = [{id: 1}, {id: 3}, {id: 2}, {id: 3}, {id: 1}];
var b = a.reduce((r, x) => ((r[x.id] || (r[x.id] = [])).push(x), r), {});
var c = Object.keys(b).map(x => b[x]);
console.log(c); // [[{id: 1}, {id: 1}], [{id: 2}], [{id: 3}, {id: 3}]]
第二种 :按照时间年月日分类(时间格式 年月日 时分秒)
var a = [
{id:'2019-12-15 11:12:25'},
{id:'2019-12-15 09:04:25'},
{id:'2018-08-08 11:12:25'},
{id:'2018-08-08 09:12:25'},
{id:'2019-12-14 11:12:25'}
]
var b = a.reduce((r, x) => ((r[getProcessTime("YY-mm-dd",new Date(x.id))] || (r[getProcessTime("YY-mm-dd",new Date(x.id))] = [])).push(x), r), {})
var c = Object.keys(b).map(x => b[x])
//格式化时间
function getProcessTime(fmt, date) {
let ret
let opt = {
"Y+": date.getFullYear().toString(), // 年
"m+": (date.getMonth() + 1).toString(), // 月
"d+": date.getDate().toString(), // 日
"H+": date.getHours().toString(), // 时
"M+": date.getMinutes().toString(), // 分
"S+": date.getSeconds().toString() // 秒
// 有其他格式化字符需求可以继续添加,必须转化成字符串
};
for (let k in opt) {
ret = new RegExp("(" + k + ")").exec(fmt);
if (ret) {
fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0")))
};
};
return fmt
}