var arr = [
{ id: 1, username: 'jack', password: 123456, age: 25, },
{ id: 1, username: 'jack', password: 25632, age: 13, },
{ id: 3, username: 'rose', password: 25632, age: 28, },
{ id: 2, username: 'tom', password: 25632, age: 18, },
{ id: 1, username: 'jack', password: 123456, age: 18, },
{ id: 2, username: 'rose', password: 25632, age: 28, },
{ id: 3, username: 'tom', password: 123456, age: 258, }
];
- 我们有一个数组里面包对象的一个数据格式。但是很多时候这个对象里面的相同的key的vlue也相同,此时我们需要进行一个去重的操作。
function distinct1(arr, key) {
//用来存放去重后的数组包对象
var newobj = {}, newArr = [];
//遍历老数组
for (let i = 0; i < arr.length; i++) {
const item = arr[i];
//判断有没有这个key,如果没有就把这个对象放到新数组里面
if (!newobj[item[key]]) {
newobj[item[key]] = newArr.push(item);
}
}
//返回的这个新数组就是去重后的
return newArr;
}
//可以根据id去重
console.log(distinct1(arr, 'id'));
console.log(distinct1(arr, 'password'));
- 我们首先创一个新数组和对象 用来放去重后的数据。
- 然后我们遍历这个数组,得到每一个对象。
- 此时我们可以把每一个对象放到这个新对象里面去,在放入的时候我们需要做一个判断,判断这个某一项key的value是不是相同。如果不是相同的,就把这个对象放入这个新数组里面。
- 得到的这个新数组里面的对象就是去重后的
用map更简单
const newArr = arr.map(item => item.id)