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