<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
</body>
<script>
//去重
var newarr = [];
// var arr = this.msg;
var arr = [{
name: 1,
ccc: 2
}, {
name: 2
}, {
name: 2
}, {
name: 3
}, {
name: 3
}, {
name: 4
}, {
name: 151
}, {
name: 1
}, ];
//Es6 + ES5去重办法
function duplicate(arr, type) {
if (arr.length == 0) {
return arr;
} else {
if (type) {
var obj = {}
//利用ES6 reduce 累加方法
var newArr = arr.reduce((cur, next) => {
//name是对象键的 名字 保持同步
obj[next.name] ? "" : obj[next.name] = true && cur.push(next);
return cur;
}, [])
return newArr;
} else {
return Array.from(new Set(arr));
}
}
}
//ES5原生去重办法
function duplicate2(arr, type) {
var newArr = [];
var tArr = [];
if (arr.length == 0) {
return arr;
} else {
if (type) {
for (var i = 0; i < arr.length; i++) {
if (!tArr[arr[i][type]]) {
newArr.push(arr[i]);
tArr[arr[i][type]] = true;
}
}
return newArr;
} else {
for (var i = 0; i < arr.length; i++) {
if (!tArr[arr[i]]) {
newArr.push(arr[i]);
tArr[arr[i]] = true;
}
}
return newArr;
}
}
}
console.log('ES5去重', duplicate2(arr, "name"));
console.log('ES6去重', duplicate(arr, "name"));
</script>
</html>