添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

这次对数组的操作,我们使用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( let item1 of json){  //循环json数组对象的内容
	let flag = true;  //建立标记,判断数据是否重复,true为不重复
	for( let item2 of newJson){  //循环新数组的内容
		if(item1.id==item2.id){ //让json数组对象的内容与新数组的内容作比较,相同的话,改变标记为false
			flag = false;
	if(flag){ //判断是否重复
		newJson.push(item1); //不重复的放入新数组。  新数组的内容会继续进行上边的循环。
console.log("newJson",newJson);
在上面的代码中,我们首先使用 map() 方法 数组 arr 中的每个元素都转换成一个 对象 对象 的属性名和属性值都是元素本身。这个 方法 接受一个目标 对象 和一个或多个源 对象 作为参数,它会将所有源 对象 的属性复制到目标 对象 中。可以将 数组 中的每个元素都转换成一个 对象 ,然后使用 concat() 方法 将两个 数组合并 成一个 数组 ,最后使用 Object.assign() 方法 数组 中的所有 对象 合并 成一个 对象 。这个 方法 不会改变原来的 数组 ,而是返回一个新的 数组 ,新的 数组 包含了原来的 数组 和新加入的 数组 中的所有元素。 function arrayRe Set ( js onArray) { let js on = js onArray; //两个 数组 对象 合并 let new Js on = []; //盛放 去重 后数据的新 数组 console.log( js on) for (let i = 0; i < js on.length; i++) { //循环 js on 数组 对象 的内容 let flag = true; //建立标记,判断数据是否重复,true为不重复 for (let // 方法 一: 数组 遍历 去重 var arr = [1,1,1,2,3,4,1,3,6,7,3,5];//声明一个含有重复值得 数组 function norepeat(arr){//创建norepeat函数 for(var i = 0;i < arr.length;i++){//遍历 数组 for(var j = i + 1;j < arr.length;j++){/... 遍历 数组 法 实现思路:新建一新 数组 ,遍历传入 数组 ,值不在新 数组 就加入该新 数组 中;注意点:判断值是否在 数组 方法 “indexOf”是ECMAScript5 方法 ,IE8以下不支持,需多写一些兼容低版本浏览器代码: //最简单 数组 去重 法 functionunique1(array){ varn=[];//一个新的临时 数组 //遍历当前 数组 for(va... let arr1 = [1, 1, 2, 3, 6, 9, 5, 5, 4] let arr2 = [1, 2, 5, 4, 9, 7, 7, 8, 8] function uniqueArr(arr1,arr2) { // 合并 两个 数组 arr1.push(...arr2)//或者arr1 = [...arr1,...a...