1.根据id和并json
<script>
let arr = [{
id: 1,
name: '张三'
},
{
id: 1,
name: '李四'
},
{
id: 3,
name: '王五'
},
{
id: 1,
name: '二傻子'
},
{
id: 5,
name: '老王'
},
{
id: 5,
name: '阿旺'
}
];
//按照id相同合并
//
arr = arr.map(function (item, index, arr) {
const i = arr.find(_item => item.id === _item.id);
if (i !== item) {
i.name.push(item.name);
return undefined;
} else {
i.name = [i.name];
return i;
}
}).filter(item => item !== undefined);
console.log(arr);
</script>
2.根据Group和并json
<script>
// 原数据类型
let arr2 = [{
"Group": 1,
"Groupheader": "质量管理",
"Leftimg": "",
"Left": "",
"Min": "",
"Right": "",
"Rightimg": ""
},
{
"Group": 1,
"Groupheader": "",
"Leftimg": "",
"Left": "",
"Min": "质量巡检",
"Right": "",
"Rightimg": ""
},
{
"Group": 2,
"Groupheader": "设备管理",
"Leftimg": "",
"Left": "",
"Min": "",
"Right": "",
"Rightimg": ""
},
{
"Group": 2,
"Groupheader": "",
"Leftimg": "",
"Left": "",
"Min": "设备专业点检",
"Right": "",
"Rightimg": ""
},
{
"Group": 2,
"Groupheader": "",
"Leftimg": "",
"Left": "",
"Min": "设备日检",
"Right": "",
"Rightimg": ""
},
{
"Group": 2,
"Groupheader": "",
"Leftimg": "",
"Left": "",
"Min": "设备周检",
"Right": "",
"Rightimg": ""
},
{
"Group": 2,
"Groupheader": "",
"Leftimg": "",
"Left": "",
"Min": "设备月检",
"Right": "",
"Rightimg": ""
}
];
// 转化
newarr = [{
Group: 1,
data: [{
"Group": 1,
"Groupheader": "",
"Leftimg": "",
"Left": "",
"Min": "质量巡检",
"Right": "",
"Rightimg": ""
}, {
"Group": 1,
"Groupheader": "",
"Leftimg": "",
"Left": "",
"Min": "质量巡检",
"Right": "",
"Rightimg": ""
}]
}, {
Group: 2,
data: [{
"Group": 2,
"Groupheader": "",
"Leftimg": "",
"Left": "",
"Min": "设备专业点检",
"Right": "",
"Rightimg": ""
}, {
"Group": 2,
"Groupheader": "",
"Leftimg": "",
"Left": "",
"Min": "设备专业点检",
"Right": "",
"Rightimg": ""
}, {
"Group": 2,
"Groupheader": "",
"Leftimg": "",
"Left": "",
"Min": "设备日检",
"Right": "",
"Rightimg": ""
},
{
"Group": 2,
"Groupheader": "",
"Leftimg": "",
"Left": "",
"Min": "设备周检",
"Right": "",
"Rightimg": ""
}, {
"Group": 2,
"Groupheader": "",
"Leftimg": "",
"Left": "",
"Min": "设备周检",
"Right": "",
"Rightimg": ""
}
]
}]
var map = {}, //map用来判断是否已经存在
dest = [];
arr2.forEach(function (item, i, arr) {
//如果这个没有找到这个属性就把该属性加在map里 并且把重组的数据放到dest里
if (!map[item.Group]) {
dest.push({
Group: item.Group,
data: [item]
})
map[item.Group] = item
//如果找到了该属性 证明该值已经存在了 可以直接在dest里面的data数据里push进去
} else {
dest.forEach(function (item1, i1, arr1) {
if (item1.Group == item.Group) {
item1.data.push(item);
}
})
}
})
console.log(dest)
console.log(map)
</script>
3.根据条件分组
<script>
// 分组 不确定有多少条数据
// 根据sum来分值 sum 小于等于3一组 大于3小于等于6一组 以此类推
let json = [{
sum: 1,
value: '11111111111111'
},
{
sum: 2,
value: '2222222222222'
},
{
sum: 4,
value: '44444444444444'
},
{
sum: 5,
value: '55555555555555555'
},
{
sum: 6,
value: '66666666666666666'
},
{
sum: 8,
value: '8888888888888888888'
},
{
sum: 9,
value: '9999999999999999'
},
{
sum: 10,
value: 'aaaaaaaaaaaaaa'
},
{
sum: 11,
value: 'bbbbbbbbbbbbbbbbbbbbb'
},
{
sum: 12,
value: 'ccccccccccccccccc'
},
{
sum: 13,
value: 'ddddddddddddddddddddd'
},
{
sum: 14,
value: 'eeeeeeeeeeeeeeeeee'
},
{
sum: 15,
value: 'fffffffffffffffffff'
},
{
sum: 16,
value: 'gggggggggggggggggggggggg'
},
{
sum: 17,
value: 'hhhhhhhhhhhhhhhhhhhhhh'
},
]
console.log(json)
// map1={
// 1:123,
// 2:345,
// }
//通过属性判断该值是否存在的 1 2 就是属性
var map1 = {},
result = [];
json.forEach(function (item, i, arr) {
var row = Math.ceil(item.sum / 3); //该值代表应该在第几行
if (!map1[row]) {
result.push({
row: row, //第几行
data: [item] //所有的数据
})
map1[row] = row //后面的row无所谓放啥
} else {
result.forEach(function (item1, i1, arr1) {
if (item1.row == row) {
item1.data.push(item);
}
})
}
})
console.log(result)
console.log(map1)
</script>
本文介绍如何使用JavaScript对JSON数据进行合并与分组,包括根据ID或Group字段合并对象,以及根据条件进行数据分组的方法。适用于前端开发、后端开发及数据处理等领域。
840

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



