JS 数组,数组对象的合并去重方法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/NAMECZ/article/details/82220534

这次对数组的操作,我们使用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);

结果

猜你喜欢

转载自blog.csdn.net/NAMECZ/article/details/82220534