一、数组去重
1、ES6--Set方法数组去重
function uniq(arr){
var a=new Set(arr);
var b=[...a];
return b
}
var aa=[1,2,2,2,3,3,3,4,4,5,6,7,7,8,8];
var bb=uniq(aa);
//输出结果
Array(8) [ 1, 2, 3, 4, 5, 6, 7, 8 ]
2、利用对象做第二个容器(与第一个对象去重大致相同)
function uniq(arr){
var res = [];
var obj = {};
for(var i=0; i<arr.length; i++){
if (!obj[arr[i]]) {
obj[arr[i]] = 1;
res.push(arr[i])
}
}
return res;
}
var cc=[1,2,3,3,3,4,5,5,66,7,7,8,9,9];
dd=uniq(cc);
//输出结果
Array(9) [ 1, 2, 3, 4, 5, 66, 7, 8, 9 ]
3、indexOf / includes 方法 去重
function uniq(arr){
var temp = []; //一个新的临时数组
for(var i = 0; i < arr.length; i++){
if(temp.indexOf(arr[i]) == -1){ //也可以使用ES6中的 includes -- 替换indexOf
temp.push(arr[i]);
}
}
return temp;
}
var aa=[1,1,2,3,3,4,5,5,'hello','hello','hell','well'];
cc=uniq(aa);
//输出结果
Array(8) [ 1, 2, 3, 4, 5, "hello", "hell", "well" ]
二、对象去重 (操作环境为浏览器--F12--控制台--复制代码回车即可实现)
1、利用对象访问属性的方法,判断对象中是否存在 key (key 指代关键字段,用作识别是重复一的字段)
var list=[ {
id: 132,
rank: "1",
rankUpdateDate: "2019-12-30 10:13:44",
uid: 65,
nickName: "Tan1sALuckyBoy",
mobile: null,
number: 7,
},
{
id: 131,
rank: "2",
rankUpdateDate: "2019-12-27 17:09:14",
uid: 65,
nickName: "Tan1sALuckyBoy",
mobile: null,
number: 6,
},
{
id: 127,
rank: "3",
rankUpdateDate: "2019-12-27 00:00:00",
uid: 143,
nickName: "客茧87334u",
mobile: null,
number: 2,
},
{
id: 126,
rank: "4",
rankUpdateDate: "2019-12-27 00:00:00",
uid: 122,
nickName: "night-cat",
mobile: null,
number: 2,
},
{
id: 130,
rank: "5",
rankUpdateDate: "2019-12-27 14:10:45",
uid: 65,
nickName: "Tan1sALuckyBoy",
mobile: null,
number: 2,
},
{
id: 130,
rank: "5",
rankUpdateDate: "2019-12-27 14:10:45",
uid: 65,
nickName: "Tan1sALuckyBoy",
mobile: null,
number: 2,
},
{
id: 130,
rank: "5",
rankUpdateDate: "2019-12-27 14:10:45",
uid: 65,
nickName: "Tan1sALuckyBoy",
mobile: null,
number: 2,
}]
var arr = list;
var list2 = [];
var obj = {};
for (var i = 0; i < arr.length; i++) {
if (!obj[arr[i].uid]) {
list2.push(arr[i]);
obj[arr[i].uid] = true;
}
}
console.log(JSON.stringify(list2));
2、利用reduce方法遍历数组,reduce第一个参数是遍历需要执行的函数,第二个参数是item的初始值
(list在最上面创建了)
var arr = list;
var obj = {};
var list2 = [];
list2 = arr.reduce(function(item, next) {
obj[next.uid] ? "" : (obj[next.uid] = true && item.push(next));
return item;
}, []);
console.log(JSON.stringify(list2));