js去除数组对象中的重复对象

  • Post author:
  • Post category:其他

1、根据数组对象中的id作比较,id相同的去掉。这种方法只会保留 id 第一个出现的数组

第一种:

 var arr = [
    {id: 1, name: 'sli', year: 2012},
    {id: 2, name: 'ap', year: 2015},
    {id: 1, name: 'alslion', year: 2012},
    {id: 3, name: 'pose', year: 2012},
]

//删除arr中的重复对象
var newArr= [];
var arrId = [];
for(var item of arr){
    if(arrId.indexOf(item['id']) == -1){
        arrId.push(item['id']);
        newArr.push(item);
    }
}
console.log(arrId,newArr);

结果如下:
在这里插入图片描述
第二种:reduce()

var arr = [
    {name:'uzi',color:'blue'},
    {name:'pdd',color:'white'},
    {name:'mlxg',color:'orange'},
    {name:'uzi',color:'red'},
]

let hash = {};
var newArr = arr.reduce((item, next) => {
    hash[next.name] ? '' : hash[next.name] = true && item.push(next);
    return item
}, []);
console.log(newArr);

结果如下:
在这里插入图片描述
第三种:

let arr = [
	{name:'黎明',id:21111},
    {name:'王小二',id:1111},
    {name:'大小二',id:3222}
]

arr.splice(arr.findIndex(item => item.id === 3222), 1); 

结果如下:
在这里插入图片描述

2、数组对象完全相同的去除

第一种:

			function delObj(obj) {
                var uniques = [];
                var stringify = {};
                for (var i = 0; i < obj.length; i++) {
                    var keys = Object.keys(obj[i]);
                    keys.sort(function(a, b) {
                        return (Number(a) - Number(b));
                    });
                    var str = '';
                    for (var j = 0; j < keys.length; j++) {
                        str += JSON.stringify(keys[j]);
                        str += JSON.stringify(obj[i][keys[j]]);
                    }
                    if (!stringify.hasOwnProperty(str)) {
                        uniques.push(obj[i]);
                        stringify[str] = true;
                    }
                }
                uniques = uniques;
                return uniques;
            }
            var arr = [
                {name:'uzi',color:'blue'},
                {name:'pdd',color:'white'},
                {name:'mlxg',color:'orange'},
                {name:'uzi',color:'blue'},
            ]
            console.log('arr:',delObj(arr))
			
			var arr1 = [
                {name:'uzi',color:'blue'},
                {name:'pdd',color:'white'},
                {name:'mlxg',color:'orange'},
                {name:'uzi',color:'red'},
            ]
            console.log('arr1:',delObj(arr1))

结果如下图所示:
在这里插入图片描述
在这里插入图片描述
第二种:引用Lodash

Lodash官网: https://www.lodashjs.com/docs/latest#_uniqwitharray-comparator

用法:_.uniqWith(array, [comparator])
在这里插入图片描述
例子

var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];
 
_.uniqWith(objects, _.isEqual);
// => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]

版权声明:本文为nnaay_原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。