1、js中,根据数组里面每个对象中某个共同字段进行分组分组,完整代码:(将 id 相同的数据分在同一组)
let dataArr = [
{id: 1, value: '值1'},
{id: 2, value: '值2'},
{id: 3, value: '值3'},
{id: 1, value: '值4'},
{id: 2, value: '值5'},
];
function classify(arr){
let map = {};
let myArr = [];
for(let i = 0; i < arr.length; i++){
if(!map[arr[i].id]){
myArr.push({
id: arr[i].id,
data: [arr[i]]
});
map[arr[i].id] = arr[i]
} else {
for(let j = 0; j < myArr.length; j++){
if(arr[i].id === myArr[j].id){
myArr[j].data.push(arr[i]);
break
}
}
}
}
return myArr
}
console.log(classify(dataArr))
打印结果:
2、js对象数组重复值,值保留一个值的计算方法
let arr = [
{id: 1,name: '小1',age: 11,gender: '男'},
{id: 2,name: '小1',age: 21,gender: '男'},
{id: 3,name: '小2',age: 23,gender: '男'},
{id: 4,name: '小3',age: 23,gender: '女'},
{id: 5,name: '小3',age: 3,gender: '女'},
{id: 6,name: '小4',age: 23,gender: '男'}
]
let obj = {}
arr = arr.reduce((cur, next) => {
obj[next.name] ? '' : (obj[next.name] = true && cur.push(next))
return cur
}, [])
console.log(arr)
结果 :