JavaScript之数组去重

Eureka自我保护机制 Eureka自我保护机制 默认情况下,当eureka server在一定时间内没有收到实例的心跳,便会把该实例从注册表中删除(默认是90秒),但是,如果短时间内丢失大量的实例心跳,便会触发eureka server的自我保护机制,比如在开发测试时,需要频繁地重启微服务实例,但是我们很少会把eureka server一起重启(因为在开发过程中不会修改eureka注册中心),当一分钟内收到的心跳数大量减少时,会触发该保护机制。可以在eureka管理界面看到Renews threshold和Renews(last 阅读详情

前言

数组去重是很常见的,这里总结一下,自己学过的数组去重的方法

1、数组遍历结合indexOf

indexOf 方法可返回指定元素在数组中首次出现的位置,如果没有,就返回-1

<script>
    var obj1 = {
        name: 'tom',
        age: 18
    };
    var obj2 = {
        name: 'tom',
        age: 18
    };
    console.log(obj1 == obj2);// false
	//这里对象的比较是比较对象的引用地址是否相同


	var array = [1, 2, 3, null, 'aa', 'bb', 'aa', 2, 3, {
        name: 'tom',
        age: 18
    }, {
        name: 'cat',
        age: 19
    }, {
        name: 'tom',
        age: 18
    }, undefined, undefined, null]
    
    
	function unique1(arr) {
        console.time("unique1");// 开始计时,测试程序运行时间
        let list = []
        for (var i = 0; i < arr.length; i++) {
            if (list.indexOf(arr[i]) === -1) {
                list.push(arr[i])
            }
        }
        console.timeEnd("unique1");// 结束计时,输出时间
        return list;
    }
    console.log(unique1(array));
</script>

2、Set

Set 属于ES6提供的新的数据结构

<script>
    //1、Set
    function unique2(arr) {
        console.time("unique2");
        let list = Array.from(new Set(arr));
        console.timeEnd("unique2");
        return list;
    }
    console.log(unique2(array));
</script>

3、includes

includes 可以用来判断数组中是否包含某个元素

<script>
   function unique3(arr) {
        console.time("unique3");
        let list = []
        for (let i = 0; i < arr.length; i++) {
            if (!list.includes(arr[i])) {
                list.push(arr[i])
            }
        }
        console.timeEnd("unique3");
        return list
    }
    console.log(unique3(array));     
</script>

4、reduce结合indexOf

reduce 作为数组方法,可以用来数组遍历

<script>
	 function unique5(arr) {
        console.time("unique5");
        let newArr = Array.from(arr).reduce((pre, now) =>
            pre.includes(now) ? pre : [...pre, now], [])
        console.timeEnd("unique5");
        return newArr
    }
    console.log(unique5(map1));
</script>

5、hasOwnProperty

hasOwnProperty 可以判断是否存在对象属性

<script>
	function unique5(arr) {
        console.time("unique5");
        var obj = {};
        var newArr = arr.filter(function (item, index, arr) {
            return obj.hasOwnProperty(typeof item + item) ? false : (obj[typeof item + item] = true)
        })
        console.timeEnd("unique5");
        return newArr
    }
	//结果中,相同属性值的对象被去重了,说明hasOwnProperty 在比较时,是判断每个元素的值是否相同
    console.log(unique5(map));
</script>

6、总结

完整代码

<script>
    var obj1 = {
        name: 'tom',
        age: 18
    };
    var obj2 = {
        name: 'tom',
        age: 18
    };
    console.log(obj1 == obj2); // false
    //这里对象的比较是比较对象的引用地址是否相同

    var array = [1, 2, 3, null, 'aa', 'bb', 'aa', 2, 3, {
        name: 'tom',
        age: 18
    }, {
        name: 'cat',
        age: 19
    }, {
        name: 'tom',
        age: 18
    }, undefined, undefined, null]

    //1、indexOf
    function unique1(arr) {
        console.time("unique1"); // 开始计时,测试程序运行时间
        let list = []
        for (var i = 0; i < arr.length; i++) {
            if (list.indexOf(arr[i]) === -1) {
                list.push(arr[i])
            }
        }
        console.timeEnd("unique1"); // 结束计时,输出时间
        return list;
    }
    var map1 = [1, 2, 3, 4, 4, 'dog', 'cat', 'dog', undefined, null, undefined, null]
    console.log(unique1(array));

    //2、Set
    function unique2(arr) {
        console.time("unique2");
        let list = Array.from(new Set(arr));
        console.timeEnd("unique2");
        return list;
    }
    console.log(unique2(array));

    //3、includes
    function unique3(arr) {
        console.time("unique3");
        let list = []
        for (let i = 0; i < arr.length; i++) {
            if (!list.includes(arr[i])) {
                list.push(arr[i])
            }
        }
        console.timeEnd("unique3");
        return list
    }
    console.log(unique3(array));

    //4、reduce+indexOf
    function unique4(arr) {
        console.time("unique4");
        let newArr = Array.from(arr).reduce((pre, now) =>
            pre.includes(now) ? pre : [...pre, now], [])
        console.timeEnd("unique4");
        return newArr
    }
    console.log(unique4(array));

    //5、hasOwnProperty
    function unique5(arr) {
        console.time("unique5");
        var obj = {};
        var newArr = arr.filter(function (item, index, arr) {
            return obj.hasOwnProperty(typeof item + item) ? false : (obj[typeof item + item] = true)
        })
        console.timeEnd("unique5");
        return newArr
    }
    console.log(unique5(array));
</script>

从上面几个方法的测试可以看出程序运行时间大小排序(由于数据太小,运行时间也小):

hasOwnProperty > reduce + indexOf > includes > indexOf > Set

【WRF数据准备】海温(SST)数据替换 阅读详情

相关推荐

统信UOS服务器上,达梦DM8数据库安装避坑全记录(附大小写敏感设置)

本文详细介绍了在统信UOS服务器版上部署达梦DM8数据库的全过程,包括环境准备、安装流程、数据库实例初始化及关键参数配置,特别是大小写敏感设置的注意事项。提供了从系统配置到性能优化的完整指南,帮助用户避免常见问题,确保数据库稳定运行。

weixin_30647423的博客 331

JavaScript-对象(上)-(案例结合)

1. 面向过程与面向对象 以完成一件事来说明什么是面向过程与面向对象。 面向过程的解决办法:注重的是具体的步骤,只有按照步骤一步一步的执行,才能够完成这件事情。 面向对象的解决办法:注重的是一个个对象,这些对象各司其职,我们只要发号施令,即可指挥这些对象帮我们完成任务。 总结: 对于面向过程思想,我们扮演的是执行者,凡事都要靠自己完成。 对于面向对象思想,我们扮演的是指挥官,只要找到相应的对象,让它们帮我 们做具体的事情即可。 面向过程思想的劣势,编写的代码都是一些变量和函数,随着程序功能的不断增

~本特利~的博客 782

【实践指南】Wasserstein距离在电力系统鲁棒优化中的核心应用

本文深入探讨了Wasserstein距离在电力系统分布鲁棒优化中的核心应用。针对风电、光伏出力的不确定性,文章阐述了如何利用Wasserstein距离构建模糊集,将复杂的分布鲁棒优化问题转化为可求解的确定性模型,并提供了从理论到代码实现的完整实践指南,有效平衡了系统运行的经济性与鲁棒性。

weixin_29229261的博客 306

JS数组怎么去重?| JavaScript中数组去重的14种方法

JS数组怎么去重?JavaScript中数组去重的13种方法,甚是详细,遇到数组去重问题时,可翻阅查看对应的去重方法

青春木鱼的博客 1万+

three.js开发3D地图记录(二)

添加地图点击事件,点击区域,地图区域改变颜色并浮起来。

anwebDesigner的博客 1694

第7.1章:StarRocks性能调优——查询分析

第7.1章:StarRocks性能调优——查询分析

爱吃辣条的博客 6475

【JavaScript】JS数组去重的几种常见方法

JS数组去重的几种常见方法 一、简单的去重方法 // 最简单数组去重法 /* * 新建一新数组,遍历传入数组,值不在新数组就push进该新数组中 * IE8以下不支持数组的indexOf方法 * */ function uniq(array){ var temp = []; //一个新的临时数组 for(var i = 0; i &amp;lt; array.length; i++){ ...

Dream_Lee的博客 1983

基于毫米波生物感知雷达+STM32设计的独居老人居家监护系统(微信小程序)(192)

当前基于STM32设计的独居老人居家监护系统为独居老人提供一种简便、实时的健康监护服务。该系统通过集成多种传感器和功能模块,能够实时监测老人的生理指标、姿态以及室内环境状况,并通过微信小程序远程显示数据,当出现异常情况时及时发出报警提醒。

1万+

js对象数组去重,简单数组去重

JavaScript对象数组去重一、对象数组去重方式一二、对象数组去重方式二三、简单类型的数组去重 一、对象数组去重方式一 使用reduce函数。 let arr = [ { key:'1', name:'林青霞' }, { key:'2', name:'张三丰' },

weixin_43242112的博客 1万+

MicroCap声学仿真介绍(三)-人耳的频率响应

这里需要注意的是,24mm我们会填为”24m”,这里的“m”是毫的意思,24m意思是24e-3,同理7.4mm我们可以填为7.4m,意思是7.4e-3。MicroCap声学库中,已内置“声源”模块和“管”模块,我们需要调用这两个模块,并用连接线将这两个模块连接到一起,完成仿真工作。上图中第一个图是在管的一端输入1Pa(94dBSPL)的信号,管的另一端的不同频率的声压大小的仿真结果。上述的结果跟我们的常识也是符合的。换言之,我们要仿真的目的是在管的一端加1pa的声压时,管的另一端不同频率下的声压分布。

山无忧的博客 1471

30.Labview如何读懂别人程序、修改程序?

之前写过一次教大家的文章,这次教大家如何学习别人的程序,和如何搭建一套适合自己的程序框架。这里事先说明一下:要想搭好程序框架,一定要先把自己的系统,逻辑是什么!这非常重要,是决定你程序的关键因素。废话不多扯,直接说重点。

关注我,更多技术问题欢迎私聊~ 2445

JavaScript数组去重

JavaScript原生数组去重 这是一个适合刚刚接触js的同学用来练手学习的一个数组去重的方法,有原生的写法和方法的封装。数组在我们平时工作中还是经常会遇到的所以这个去重还是很有必要牢记的 原生写法 <script> var arr = [1,2,3,4,1,2,3,100,200,100,1,1,2,2,100,200,300,400]; var obj = {}; for (var i = 0; i <arr.length; i++) {

hunter 281

粒子群优化与蚁群算法求解多旅行商问题

它要求在给定一组城市和旅行商之间的距离矩阵的情况下,找到一条最优的路径方案,使得所有旅行商可以分别从起始城市出发,途径其他城市,并最终回到起始城市,同时总旅行距离达到最小。这两种算法都是基于群体智能的优化算法,在求解组合优化问题时具有较好的性能表现。假设有n个城市需要被m个旅行商访问,城市间的距离由距离矩阵D表示,其中D(i,j)表示第i个城市到第j个城市的距离。粒子群优化算法是一种基于群体智能的优化算法,其中的粒子代表了潜在的解,并通过模拟粒子在解空间中的移动来搜索最优解。一、多旅行商问题建模。

m0_47037246的博客 553

JS数组去重-JavaScript数组去重方法介绍

JS数组去重,相信大多数前端朋友在面试过程中,遇到过。一般是要求手写或者大致讲一下思路。一旦被面试官问道,讲一下数组去重的方法?此时,我们如果可以回答10种或者7、8种,很有可能给我们的面试加分。 但是在项目中,基本上没有遇见过此类问题。日常项目组遇见的概率比较低,但为了每年的金三银四跳槽季,还是有必要掌握以下,以防面试的时候遇到此问题。 下面是整理的数组去重方法,大致有10多种,希望看完能对屏幕...

qq_34648151的博客 447

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

[javascript] js数组对象去重或合并数组对象中的指定值

1、js数组对象去重复并合并数值 <script> var arrs = [ {"id": "1","name": "张三","value": "1245"}, {"id": "1","name": "张三","value": "1360"}, {"id": "2","name": "李四","value": "1120"}, {"id": "2","name": "李四","value": "1362"}, {"id": "2","name": "李四","value.

qq_34450741的博客 1216

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

JS中数组去重的五种方法

数组去重的几种方法(JavaScript版) 目录 数组去重的几种方法(JavaScript版) 第一种:双重for循环去重 方法二:单层for循环,多了一个sort函数 方法三 方法四: 方法五 前言:你需要知道JavaScript中的splice函数的用法 splice函数介绍: splice函数用法:splice函数介绍看不懂没关系,怎么用一看例子一目了然 第一种:双重for循环去重 原理 两两比较如果相等的话就删除第二个例如:1,2,3,4...

qq_51066068的博客 1万+

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

JS数组去重方法

javaScript 数组去重的常用方法及实现原理

卡卡的博客 5670

JavaScript数组去重(12种方法,史上最全)_js s去重

return arr; } var arr = [1,1,‘true’,‘true’,true,true,15,15,false,false, undefined,undefined, null,null, NaN, NaN,‘NaN’, 0, 0, ‘a’, ‘a’,{},{}]; console.log(unique(arr)) //[1, “true”, 15, false, undefined, NaN, NaN, “NaN”, “a”, {…}, {…}] //NaN和{}没有去重,两个n

weixin_45933550的博客 501

JS数组去重,JS根据数组里面的对象属性值去重

微信小程序开发交流qq群 173683895 承接微信小程序开发。扫码加微信。 微信小程序开发交流qq群 173683895 js数组简单去重 var arr1 = [1, 2, 3, 4, 5, 6, 3, 4, 3]; function arrayUnique1(arr) { var arr1 = [], obj = {}; fo...

a_靖的博客 4894

JavaScript——不同类型数组去重(简单数组去重、对象数组去重)

1. 简单数组去重 1.1 new Set() 去重 MDN中对于Set的释义:Set对象是值的集合,你可以按照插入的顺序迭代它的元素。 Set中的元素只会出现一次,即 Set 中的元素是唯一的。 执行Set后返回的是一个Set结构,是类数组 1.1.1 Array.from 将类数组转换成数组 因为Set结构不是数组,我们可以通过Array.from()的形式将其转换成数组 实例一: Set + Array.from去重 let normalArr = [1,2,3,4,5,3,4,4,'a',

我是我 2244

js 数组里面 对象去重 的3种方法

下面是将要过滤的数据,将arr里面id重复的数据去掉(下面方法中用的arr都是这组数据哦)。 var arr = [ {id: 1, name: '周瑜1'}, {id: 3, name: '王昭君1'}, {id: 2, name: '李白1'}, {id: 1, name: '周瑜2'}, {id: 2, name: '李白2'}, {id: 3, name: '王昭君2'} ]; 1.数组的reduce()方法(ie9以下不支持此方法) let newobj = {}; a

weixin_44378370的博客 818

JS 数组或数组对象去重的9种方法

/ 数组去重// 数组对象去重{ id: 1, name: "数据1" },{ id: 1, name: "数据2" },{ id: 2, name: "数据3" },{ id: 3, name: "数据4" },{ id: 4, name: "数据5" },{ id: 3, name: "数据6" },{ id: 5, name: "数据7" }

UserGuan的博客 1万+

【JavaScript】数组去重

方法时间复杂度适用场景优点缺点SetO(n)原始类型去重简单高效,适合简单数据类型去重不适合对象、复杂数据类型filterindexOfO(n²)小型数据集,简单去重代码易懂性能较差,不适合大数据reduceO(n²)数据处理过程中去重可以与其他操作结合性能较差Map或ObjectO(n)原始类型去重、效率高高效,适合需要大量查找的场景代码稍显复杂手动双重循环O(n²)教学、展示用不依赖其他方法性能最差,代码冗长复杂对象去重O(n²)对象数组去重。

小秀的博客 1136

JS数组去重

JS数组去重 一、简单的去重方法 // 最简单数组去重法 /* * 新建一新数组,遍历传入数组,值不在新数组就push进该新数组中 * IE8以下不支持数组的indexOf方法 * */ function uniq(array){ var temp = []; //一个新的临时数组 for(var i = 0; i < array.length; i++...

weixin_30794491的博客 73

【前端】【JavaScript】对象数组去重、数组去重

JavaScript对象数组去重、数组去重

JackCao_Grass的博客 601

js数组去重

利用原生JavaScript实现数组去重 方法一 思想:创建一个新数组(结果数组),每次取原数组中的元素并检查结果数组中是否已经存在该元素,如果不存在,则将该元素加入该数组,否则,跳过该元素去检查下一个元素。 代码: Array.prototype.unique1 = function(){ var result = [this[0]]; for(var i = 1; i < this

张小水儿的博客 502
上一篇: HTTP和HTTPS
下一篇: 在Docker中安装并修改MySQL中的 my.cnf 配置文件
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值