数组去重的方法

一、利用es6 set 去重
function  qu(arr){return Array.from(new Set(arr))
}

注意:此方法不能去重空对象 

二、利用for嵌套for,然后splice去重
function qu(arr){for(var i=0;i<arr.length;i++){for(var j=i+1;j<arr.length;j++){if(arr[i]==arr[j]){arr.splice(j, 1);j--;}}}return arr
}
注意:NaN和{}没有去重,null直接删除,true转换为1了
三、利用indexOf去重
 function qu(arr) {var array = [];for (var i = 0; i < arr.length; i++) {if (array.indexOf(arr[i]) == -1) {array.push(arr[i])}}return array}// for 循环原数组,判断结果数组是否存在当前元素,如果有相同的值则跳过,不相同则 push 进数组。
注意:NaN和{}没有去重
四、利用sort()
function qu(arr) {arr = arr.sort();var array = [arr[0]];for (var i = 1; i < arr.length; i++) {if (arr[i] !== arr[i - 1]) {array.push(arr[i])}}return array}

 注意:NaN和{}没有去重

五、利用对象的属性不能相同的特点进行去重
   function qu(arr) {var array = [];var obj = {};for (var i = 0; i < arr.length; i++) {if (!obj[arr[i]]) {array.push(arr[i])obj[arr[i]] = 1} else {obj[arr[i]]++}}return array}// 两个true直接去掉了,NaN和{}去重

 注意:NaN和{}可以去重

六、利用includes
function qu(arr) {var array = [];for (var i = 0; i < arr.length; i++) {if (!array.includes(arr[i])) {//includes 检测数组是否有某个值array.push(arr[i]);}}return array}

注意: {}没有去重

七、利用hasOwnProperty
function qu(arr) {var obj = {};return arr.filter(function (item, index, arr) {return obj.hasOwnProperty(typeof item + item) ? false : (obj[typeof item + item] = true)})}

注意:NaN和{}可以去重

 八、利用 filter
 function qu(arr) {return arr.filter(function (item, index, arr) {//当前元素,在原始数组中的第一个索引==当前索引值,否则返回当前元素return arr.indexOf(item, 0) === index;});}

注意: {}没有去重

九、利用递归去重
function qu(arr) {//排序var array = arr;var len = array.length;array.sort(function (a, b) {   //排序后更加方便去重return a - b;})
//去重function loop(index) {if (index >= 1) {if (array[index] === array[index - 1]) {array.splice(index, 1);}loop(index - 1);    //递归loop,然后数组去重}}loop(len - 1);return array;}

注意:NaN和{}和false没有去重

十、利用 Map 数据结构去重 
  function qu(arr) {let map = new Map();let array = new Array();  // 数组用于返回结果for (let i = 0; i < arr.length; i++) {if (map.has(arr[i])) {  // 如果有该key值map.set(arr[i], true);} else {map.set(arr[i], false);   // 如果没有该key值array.push(arr[i]);}}return array;}

注意:{}没有去重

 十一、利用 reduce+includes
    function qu(arr){return arr.reduce((prev,cur) => prev.includes(cur) ? prev : [...prev,cur],[]);
}

注意:{}没有去重

十二、 [...new Set(arr)]
[...new Set(arr)] 
其实,严格来说并不算是一种,相对于第一种方法来说只是简化了代码)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/701921.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

03|分页查询优化

1. 根据自增且连续的主键排序 使用条件&#xff1a;主键连续且自增 & 结果按照主键排序 select * from employees limit 90000,5;理论上应该走主键索引, 为什么现在type是 all呢? ● 查询第9w行数据开始的5条数据时属于深度分页。 ● limit 90000 5工作原理就是先读取前面…

mac下使用jadx反编译工具

直接执行步骤&#xff1a; 1.创建 jadx目录 mkdir jadx2.将存储库克隆到目录 git clone https://github.com/skylot/jadx.git 3. 进入 jadx目录 cd jadx 4.执行编译 等待片刻 ./gradlew dist出现这个就代表安装好了。 5.最后找到 jadx-gui 可执行文件&#xff0c;双击两下…

C/C++暴力/枚举/穷举题目(刷蓝桥杯基础题的进!)

目录 前言 一、百钱买百鸡 二、百元兑钞 三、门牌号码&#xff08;蓝桥杯真题&#xff09; 四、相乘&#xff08;蓝桥杯真题&#xff09; 五、卡片拼数字&#xff08;蓝桥杯真题&#xff09; 六、货物摆放&#xff08;蓝桥杯真题&#xff09; 七、最短路径&#xff08;蓝…

Unity中URP实现水体效果(泡沫)

文章目录 前言一、给水上色1、我们在属性面板定义两个颜色2、在常量缓冲区申明这两个颜色3、在片元着色器中&#xff0c;使用深度图对这两个颜色进行线性插值&#xff0c;实现渐变的效果 二、实现泡沫效果1、采样 泡沫使用的噪波纹理2、控制噪波效果强弱3、定义_FoamRange来控制…

自定义神经网络二之模型训练推理

文章目录 前言模型概念模型是什么&#xff1f;模型参数有哪些神经网络参数案例 为什么要生成模型模型的大小什么是大模型 模型的训练和推理模型训练训练概念训练过程训练过程中的一些概念 模型推理推理概念推理过程 总结 前言 自定义神经网络一之Tensor和神经网络 通过上一篇…

yolov8添加注意力机制模块-CBAM

修改 在tasks.py&#xff08;路径&#xff1a;ultralytics-main/ultralytics-main - attention/ultralytics/nn/tasks.py&#xff09;文件中&#xff0c;引入CBAM模块。因为yolov8源码中已经包含CBAM模块&#xff0c;在conv.py文件中&#xff08;路径&#xff1a;ultralytics-…

业务流程管理系统(BPMS):一文掌握,组织业务流程优化必备。

大家好&#xff0c;我是大美B端工场&#xff0c;本期继续分享商业智能信息系统的设计&#xff0c;欢迎大家关注&#xff0c;如有B端写系统界面的设计和前端需求&#xff0c;可以联络我们。 一、什么是BPMS系统 BPMS是Business Process Management System&#xff08;业务流程管…

学习Python分支结构不走弯路

1.单分支语句 """ 语法&#xff1a; if 表达式:执行语句 执行流程&#xff1a;当表达式成立的时候&#xff0c;执行语句&#xff0c;否则不执行 """age int(input(请输入你的年龄&#xff1a;)) if age > 18:print(欢迎光临&#xff01;) …

智慧农业技术解决方案总述

概述 农业作为关系着国计民生的基础产业,其信息化、智慧化的程度尤为重要。农业、农村的信息化是国家信息化、现代化的基础和重要组成部分,没有农业、农村的信息化、现代化就没有整个国家的信息化和现代化。 物联网本身是针对特定管理对象的“有限网络”,是以实现控制和管…

二进制部署k8s集群之cni网络插件

目录 k8s的三种网络模式 pod内容器之间的通信 同一个node节点中pod之间通信 不同的node节点的pod之间通信 flannel网络插件 flannel的三种工作方式 VxLAN host-GW UDP Flannel udp 模式 Flannel VXLAN 模式 flannel插件的三大模式的总结 calico网络插件 k8s 组网…

ABC342 A-G

HUAWEI Programming Contest 2024&#xff08;AtCoder Beginner Contest 342&#xff09; - AtCoder 被薄纱的一场 A - Yay! 题意&#xff1a; 给出一串仅由两种小写字母构成的字符串&#xff0c;其中一种小写字母仅出现一次&#xff0c;输出那个仅出现一次的小写字母的位置…

PyTorch概述(五)---LINEAR

torch.nn.Linear torch.nn.Linear(in_features,out_features,biasTrue,deviceNone,dtypeNone) 对输入的数据应用一个线性变换&#xff1a; 该模块支持TensorFLoat32类型的数据&#xff1b;在某些ROCm设备上&#xff0c;使用float16类型的数据输入时&#xff0c;该模块在反向传…

文本左右对齐

题目链接 文本左右对齐 题目描述 注意点 words[i] 由小写英文字母和符号组成每个单词的长度大于 0&#xff0c;小于等于 maxWidth输入单词数组 words 至少包含一个单词要求尽可能均匀分配单词间的空格数量。如果某一行单词间的空格不能均匀分配&#xff0c;则左侧放置的空格…

Unity中URP实现水体(水下的扭曲)

文章目录 前言一、使用一张法线纹理&#xff0c;作为水下扭曲的纹理1、在属性面板定义一个纹理&#xff0c;用于传入法线贴图2、在Pass中&#xff0c;定义对应的纹理和采样器3、在常量缓冲区&#xff0c;申明修改 Tilling 和 Offset 的ST4、在顶点着色器&#xff0c;计算得到 应…

目标检测开源数据集——太阳能板缺陷

简介 太阳能板&#xff0c;也称为太阳能电池板&#xff0c;是一种将太阳能转化为电能的设备。它的主要作用包括&#xff1a; 提供电力&#xff1a;太阳能板通过吸收阳光&#xff0c;将其转化为直流电&#xff0c;这种电能可以被各种设备使用。例如&#xff0c;它可以为家庭、…

重生奇迹MU职业排行

1、魔法师&#xff1a;魔法师是奇迹MU中最具实力的职业之一&#xff0c;他们拥有顶级的范围输出能力&#xff0c;同时还具备不错的控制技能。此外&#xff0c;魔法师还具有位移和护盾保命技能&#xff0c;技能伤害非常高&#xff0c;使其在游戏中具有很高的生存和攻击能力。 2…

第十四章 Linux面试题

第十四章 Linux面试题 日志t.log(访问量)&#xff0c; 将各个ip地址截取&#xff0c;并统计出现次数&#xff0c;并按从大到小排序(腾 讯) http://192. 168200.10/index1.html http://192. 168.200. 10/index2.html http:/192. 168 200.20/index1 html http://192. 168 200.30/…

HDL FPGA 学习 - IP 模块收集,推荐书目,参考

目录 2 模块收集&#xff08;不定期更新&#xff09; 2.5 数字电路设计实用技术 3 参考 编辑整理 by Staok&#xff0c;始于 2021.2 且无终稿。转载请注明作者及出处。整理不易&#xff0c;请多支持。 本文件是“瞰百易”计划的一部分&#xff0c;尽量遵循“二项玻”定则&a…

【Redis】搞懂过期删除策略和内存淘汰策略

1、过期删除策略 1.1、介绍 Redis 是可以对 key 设置过期时间的&#xff0c;因此需要有相应的机制将已过期的键值对删除&#xff0c;而做这个工作的就是过期键值删除策略。 每当我们对一个 key 设置了过期时间时&#xff0c;Redis 会把该 key 带上过期时间存储到一个过期字典…

独孤思维:做副业被起诉了

01 前些年&#xff0c;独孤做桃子虚拟。 带了一个学员。 她上架的宝贝&#xff0c;因为版权问题&#xff0c;不太合适&#xff0c;建议她下架。 但是无奈卖得好&#xff0c;她不舍得下架。 就这样&#xff0c;过了三个月&#xff0c;收到了起诉。 所以&#xff0c;做虚拟…