let groups = {}
array.forEach(function (o) {
var group = JSON.stringify(f(o))
groups[group] = groups[group] || []
groups[group].push(o)
})
return Object.keys(groups).map(function (group) {
return groups[group]
})
}
const arrayGroupBy = (list, groupId) =>{
let sorted = groupBy(list, function (item) {
return [item[groupId]]
})
return sorted
}
arrayGroupBy(数组, '字段名称')
1、打开任一浏览器,按F12,进入开发者模式,找到控制台。本文以chrome浏览器为例,打开浏览器之后,打开任一标签页,找到Console控制台。
2、在控制台中,就可以书写js代码了。首先在此处定义一个js对象。直接使用 var obj1 = {}定义即可。
3、在控制台中,给js对象赋值,因为js是弱类型的语言,上面定义的对象并不需要指定字段类型,所以,在定义之后,就可以直接给它赋值了。
4、相同的方式,再定义另外一个js对象。直接使用 var obj2 = {}定义即可 。
5、在控制台中,给obj2对象赋值,而且,使用与obj1不相同的字段结构。
6、在控制台中,定义一个数组,定义方式如下:var arr = new Array()。
7、在控制台中,使用arr.push(obj1),就可以将对象1存放到js数组中。arr.push(obj2),就可以将对象2存放到js数组中。注意,obj1、obj2两个对象的字段是不相同的,但是,也是可以存放到同一个js数组中的,因为js是弱类型的。最后,直接使用arr,就可以看到当前数组中的对象值。
若后台返回格式如下:
let data = [
{"createdAt": "2020-08-02T11:00:24.580Z", "name": "西瓜"},
{"createdAt": "2020-08-03T11:00:24.580Z", "name": "水蜜桃"},
{"createdAt": "2020-08-03T11:00:24.580Z", "name": "樱桃"},
{"createdAt": "2020-08-02T11:00:24.580Z", "name": "西柚"},
]
方法:使用 dayjs(createdAt).format('YYYY-MM-DD') 转换
注:dayjs 安装引用
npm install dayjs --save import dayjs from 'dayjs'
for ( let i=0i<array.lengthi++ ) {
let createdAt = dayjs(array[i].time)
array[i].createdAt = createdAt
}
mapName (array) {
let newArray = []
array.forEach((item, i) =>{
let index = -1
let alreadyExists = newArray.some((newItem, j) =>{
if (item.createdAt === newItem.createdAt) {
index = j
return true
}
})
if (!alreadyExists) {
newArray.push({
createdAt: item.createdAt,
name: [item.name]
})
} else {
newArray[index].price.push(item.name)
}
})
return newArray
}