js数组对象的去重

[亡魂溺海] 提交于 2020-01-09 11:00:10

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

第一种方案:

var arr = [1,1,4,2,4,5,6,7];

var newArr = new Set(arr);

console.log(newArr);

 

但是如果是对象就傻眼了。

function unique(arr){
   let unique = {};
   arr.forEach(function(item){
     unique[JSON.stringify(item)]=item;//键名不会重复
   })
   arr = Object.keys(unique).map(function(u){ 
   //Object.keys()返回对象的所有键值组成的数组,map方法是一个遍历方法,返回遍历结果组成的数组.将unique对象的键名还原成对象数组
     return JSON.parse(u);
   })
   return arr;
 }

 var a = [{a:'1',b:'2'},{a:'3',b:'4'},{a:'5',b:'6'}];
	//a = a.filter(item=>item.a='sss');
//console.log(a)

	var b = [{a:'1',b:'2'},{a:'5',b:'6'},{a:'7',b:'8'}];
	var c = [...a,...b];
	console.log(unique(c));

结果:

[ { a: '1', b: '2' },
  { a: '3', b: '4' },
  { a: '5', b: '6' },
  { a: '7', b: '8' } ]

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!