最近遇到了一个这样的问题:需要对一个数组进行去重复处理,而且数组内的元素为json对象。经过各种资料的查阅,终于解决了,写这篇文章记录一下解决方法。
方法一、通过JSON.stringify方法将json对象转化为字符串,然后对字符串进行比对。代码如下:
var arr = [{name: 'Mery',age:24},{name:'Mery',age:24},{name:'Bob',age:24}];
function unique(arr){
let res = [];
for(let i=0;i<arr.length;i++){
for(let j=i+1;j<arr.length;j++){
if (JSON.stringify(arr[i]) === JSON.stringify(arr[j])) {
arr.splice(j, 1);
j--;
}
}
}
return arr;
}
unique(arr); //[{name:'Mery',age:24},{name:'Bob',age:24}]
方法二、通过循环遍历json对象,将json对象中的内容一一进行比对。代码如下:
var arr = [{age:24,name:'Mery'},{name: 'Mery',age:24},{name:'Mery',age:24},{name:'Bob',age:24}];
function unique(arr){
let res = [];
for(let i=0;i<arr.length;i++){
for(let j=i+1;j<arr.length;j++){
var isEquals = true;
for(let ele in arr[i] ){
if(arr[i][ele] !== arr[j][ele] ){
isEquals = false;
}
}
if(isEquals === true){
arr.splice(j, 1);
j--;
}
}
}
return arr;
}
unique(arr); //[{name:'Mery',age:24},{name:'Bob',age:24}]