js 一维数组对象(根据对象某个值) 转 二维数组对象
2020-10-14 本文已影响0人
Yyyyyyyyyujie
//要求:
var arr = [{ a: 1 }, { a: 1 }, { a: 2 }, { a: 3 }, { a: 3 }, { a: 4 }, { a: 2 }]
//输出结果 [[{ a: 1 }, { a: 1 }],[{ a: 2 }, { a: 2 }],[{ a: 3 }, { a: 3 }],[{ a: 4 }]]
var arr = [{ a: 1 }, { a: 1 }, { a: 2 }, { a: 3 }, { a: 3 }, { a: 4 }, { a: 2 }]
var result = []
//先去重 然后 取值
new Promise((resolve, reject) => {
let newArr = screen(arr);
resolve(newArr)
}).then((newArr) => {
for (let item of newArr) {
let current = arr.filter((e) => {
return item.a == e.a
})
result.push(current)
}
console.log(result)
})
//数组对象去重
function screen(arr) {
let map = new Map();
for (let item of arr) {
if (!map.has(item.a)) {
map.set(item.a, item);
}
}
return [...map.values()];
}