方法一:
function JsonArrayGroup(arr){
var map = {},dest = [];
for (var i = 0; i < arr.length; i++) {
var ai = arr[i];
if (!map[ai.id]) {
dest.push({
id: ai.id,
name: ai.name,
data: [ai]
});
map[ai.id] = ai;
} else {
for (var j = 0; j < dest.length; j++) {
var dj = dest[j];
if (dj.id == ai.id) {
dj.data.push(ai);
break;
}
}
}
}
return dest;
}
方法二:
let map = {},
nList = []
arr.forEach((item) => {
if (!map[item.date]) {
nList.push({
date: item.date,
data: [item]
})
map[item.date] = item
} else {
//因为forEach不支持break,所以使用every实现
nList.every((nItem) => {
if (nItem.date === item.date) {
nItem.data.push(item)
return false
}
return true
})
}
})
以上方法均来自网上,因为已经转多了多次了,无法确认原文来源,感谢原作者;
本文介绍了两种使用JavaScript对数组进行分组的有效方法。第一种方法使用传统的for循环和数组push方法,第二种方法则利用了forEach和every方法。这两种方法都实现了根据特定属性将数组元素分组到新的对象集合中。
&spm=1001.2101.3001.5002&articleId=88429767&d=1&t=3&u=5a10339bfb714149ac9cfa9b74165a69)
1344

被折叠的 条评论
为什么被折叠?



