1. 程式人生 > >前端面試題之JS物件陣列去重

前端面試題之JS物件陣列去重

前幾天去找實習,碰到一道JS物件陣列去重的題目,解法其實與JS普通陣列去重的方法類似。

1.JS陣列去重

方法1:

	var arr = [1,1,2,2,2,3,4,5,6,7,8,9,9,9,10];
	var newArr = [...new Set(arr)];//ES6的新語法
	console.log(newArr);

方法2:

	var arr = [1,1,2,2,2,3,4,5,6,7,8,9,9,9,10];
	var newArr = arr.filter((item,index,array)=>{
		return arr.indexOf(item) === index;
	})
	console.log(newArr);

2.JS物件陣列去重

物件陣列去重有很多方法,下面介紹一種最容易理解的辦法:把數組裡的物件轉化成字串JSON.stringify(),再利用JS陣列去重的方法2來處理陣列即可。

	var arr = [{a:1,b:2},{a:1,b:2},{a:3,b:1},{a:5,b:2},{a:3,b:1}];//物件陣列
	var stringArr = arr.map((item,index,array)=>{
		return JSON.stringify(item)
	})//轉化為字串陣列
	
	var filterArr = stringArr.filter((item,index,array)=>{
		return array.indexOf(item) === index;
	})//過濾相同的字串

	var lastArr = filterArr.map((item,index,array)=>{
		return JSON.parse(item);
	})//重新轉化為物件陣列

	console.log(lastArr);//[{a:1,b:2},{a:3,b:1},{a:5,b:2}];