1. 程式人生 > >JS 陣列,陣列物件的合併去重方法

JS 陣列,陣列物件的合併去重方法

這次對陣列的操作,我們使用es6的新語法來完成,所以在看下邊程式碼之前,我們要了解我們下邊要用到的es6中的set集合,和for...of 方法:

首先介紹set集合:

ES6提供了新的資料結構Set,它類似於陣列,但是成員的值都是唯一的,沒有重複的值。

Set函式可以接受一個數組(或類似陣列的物件)作為引數,用來初始化。

注意:

向set加入值的時候,不會發生型別轉變,所以 5 和 '5' 是兩個不同的值。Set內部判斷兩個值是否相同,用的是類似於 "==="的演算法,但是區別是,在set內部認為NaN 等於 NaN ; 

Set例項的屬性和方法:

Set結構的例項有以下屬性。

  • Set.prototype.constructor:建構函式,預設就是Set函式。
  • Set.prototype.size:返回Set例項的成員總數。

Set例項的方法分為兩大類:操作方法(用於操作資料)和遍歷方法(用於遍歷成員)。下面先介紹四個操作方法。

  • add(value):新增某個值,返回Set結構本身。
  • delete(value):刪除某個值,返回一個布林值,表示刪除是否成功。
  • has(value):返回一個布林值,表示該值是否為Set的成員。
  • clear():清除所有成員,沒有返回值。

Set內部的元素可以用 for...of 遍歷。

Array.from()方法可以將Set資料型別轉化為陣列型別。

for...of 方法:

通俗一點的講,就是遍歷的是陣列的元素值,需要深入瞭解的同學,請自行百度,這裡就不贅述。

1、陣列的合併去重

let arr1 = [3,5,2,3,6];

let arr2 = [5,2,4,6,8,7,9,2];

let arr = arr1.concat(arr2);  //合併陣列

let arrNew= new Set(arr); //通過set集合去重


console.log("arrNew",Array.from(arrNew)); //將set集合轉化為陣列

結果

2、陣列物件的合併去重

let json1=[
	{id:1,name:"aaa"},
	{id:2,name:"bbb"},
	{id:3,name:"ccc"},
] 


let json2=[
	{id:1,name:"aaa"},
	{id:2,name:"bbb"},
	{id:4,name:"ddd"},
]

let json = json1.concat(json2); //兩個陣列物件合併

let newJson = []; //盛放去重後資料的新陣列

for(item1 of json){  //迴圈json陣列物件的內容

	let flag = true;  //建立標記,判斷資料是否重複,true為不重複

	for(item2 of newJson){  //迴圈新陣列的內容

		if(item1.id==item2.id){ //讓json陣列物件的內容與新陣列的內容作比較,相同的話,改變標記為false
			flag = false;
		}

	}

	if(flag){ //判斷是否重複
		newJson.push(item1); //不重複的放入新陣列。  新陣列的內容會繼續進行上邊的迴圈。
	}
	

}

console.log("newJson",newJson);

結果