<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>对象数组去重</title>
<script src="./jquery-3.3.1.min.js"></script>
</head>
<body>
<script type="text/javascript">
//(1)对象数组去重:reduce()方法
let log = console.log.bind(console);
let person = [
{id: 0, name: "小明"},
{id: 1, name: "小张"},
{id: 2, name: "小李"},
{id: 3, name: "小孙"},
{id: 1, name: "小周"},
{id: 2, name: "小陈"},
];
let obj = {};
//对象集合去重:ES5:reduce()
person = person.reduce((cur, next) => {
obj[next.id] ? "" : obj[next.id] = true && cur.push(next);
return cur;
}, [{id: 4, name: "jack"}, {id: 0, name: "小江"}]) //设置cur默认类型为数组,并且初始值为空的数组
console.log(person);
//(2)对象数组去重:filter()方法
var arr = [{
id: 1,
name: 'Zane'
}, {
id: 1,
name: 'Zane'
}, {
id: 2,
name: 'Zouli'
}]
var result = [];
result = uniqueFun(arr, "id");
console.log(result);
//(3)基本类型数组去重方式(ES6语法)
const arr1 = [1, 1, 12, 2, 3];
let resultArr = Array.from(new Set(arr1))
console.log(resultArr);
//对象集合去重
// person = arrayToDistinct(person,'id');
// log(person);
// let arrays={};
// arrays = arrayToDistinct(person,'id');
// log(arrays);
/**
* 对象数组去重,type表示对象里面的一个属性
*/
function uniqueFun(arr, type) {
const res = new Map();
return arr.filter((a) => !res.has(a[type]) && res.set(a[type], 1));
}
/**
* 对象数组去重
* @param {any} array:数组
* @param {any} field:去重字段
*/
function arrayToDistinct(array, field) {
let obj = {};
array = array.reduce((cur, next) => {
obj[next.id] ? "" : obj[next.id] = array.push(next);
return cur;
}, []);//设置cur默认类型为数组,并且初始值为空的数组
return array;
}
</script>
</body>
</html>
数组对象去重方法
最新推荐文章于 2023-06-26 16:16:27 发布