--- 所有的东西都是自己学习,工作中遇到的一些问题,写下来只是为了用以记录。以后方便查看,有不足之处,欢迎大家指正。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>数组对象的去重</title>
</head>
<body>
<script>
var arr = [
{ id: 1, name: '周瑜1' },
{ id: 3, name: '王昭君1' },
{ id: 2, name: '李白1' },
{ id: 1, name: '周瑜2' },
{ id: 2, name: '李白2' },
{ id: 3, name: '王昭君2' }
];
// 利用reduce()方法去重
let newobj = {};
arr = arr.reduce((preVal, curVal) => {
newobj[curVal.id] ? '' : newobj[curVal.id] = preVal.push(curVal);
return preVal;
}, [])
console.log(arr);
// 利用原生的方法去重,for循环与对象获取属性的方式
function distinctl(arr, key) {
var newobj = {}, newArr = [];
for (var i = 0; i < arr.length; i++) {
var item = arr[i];
if (!newobj[item[key]]) {
newobj[item[key]] = newArr.push(item);
}
}
return newArr;
}
distinctl(arr,'id')
// 利用Set去重
function distinct(arr, key) {
var newobj = new Set(), newArr = [];
for (var i = 0; i < arr.length; i++) {
var item = arr[i];
if (!newobj.has(item[key])) {
newobj.add(item[key]);
newArr.push(item);
}
}
return newArr;
}
// console.log(distinct(arr, 'id'));
// 利用splice与双重for循环去重
for (var i = 0; i < arr.length; i++) {
for (var j = i + 1; j < arr.length; j++) {
if (arr[i].id == arr[j].id) {
arr.splice(j, 1);
j--;
}
}
}
console.log(arr);
</script>
</body>
</html>