JavaScript 数组元素为json对象的去重复

344 阅读1分钟

最近遇到了一个这样的问题:需要对一个数组进行去重复处理,而且数组内的元素为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}]