前端面试高频题:删除数组重复元素的多种方法
最近在想着换工作,去了一家中关村的上市公司,面试官随便问了几个问题其中就提到了怎么删除数组元素的方法,表示这已经是第三次遇到了这个问题了,由于知识口头说说所以就随便说了下,之前用的时候都是直接找的方法库虽然知道大致是怎么写的但是还没有真正写过,网上的方法还是蛮多的这里也给大家分享一个作者写的吧,希望对初学者有所帮助:
//数组去重的方法 Array.prototype.unique=function(){//集中声明变量var oldArr=this,newArr=[oldArr[0]],len=oldArr.length,i=1;//过滤空数组if(!len) return this;//过滤重复元素for(;i<len;i++){newArr.indexOf(oldArr[i])<0 ? newArr.push(_this) : ''; }//返回过滤后的数组没有影响原数组return newArr; } var arr=['a','a','b','a','c','d']; console.log(arr.unique());//["a", "b", "c", "d", unique: function]
虽然网上也有很多而且自己写的也不咋地,但是毕竟自己写的逻辑清楚以后还可以顺着逻辑扩展比如扩展到对象元素去重或者是可以同时操作多个数组等等这里再放上别人的写的几个方法可以综合比较下
方法1:
function oSort(arr){var result ={};var newArr=[];for(var i=0;i{if(!result[arr[i]]){newArr.push(arr[i])result[arr[i]]=1}}return newArr}
原文出处:http://blog.sina.com.cn/s/blog_77a4568a0101d4lq.html
方法2:
遍历要删除的数组arr, 把元素分别放入另一个数组tmp中,在判断该元素在arr中不存在才允许放入tmp中 用到两个函数:for ...in 和 indexOf()
var student = ['qiang','ming','tao','li','liang','you','qiang','tao'];function unique(arr){// 遍历arr,把元素分别放入tmp数组(不存在才放)var tmp = new Array();for(var i in arr){//该元素在tmp内部不存在才允许追加if(tmp.indexOf(arr[i])==-1){}}return tmp;}
方法3:
把目标数组arr的元素值和键的位置调换 自动就把重复的元素给删除掉了,调换后的样子:array('qiang'=>1,'ming'=>1,'tao'=>1)
<script type="text/javascript">var student = ['qiang','ming','tao','li','liang','you','qiang','tao'];function unique(arr){var tmp = new Array();for(var m in arr){tmp[arr[m]]=1;}//再把键和值的位置再次调换var tmparr = new Array();for(var n in tmp){tmparr.push(n);}return tmparr;} </script>
方法4
/*** 去除数组重复元素*/function uniqueArray(data){ data = data || []; var a = {}; for (var i=0; i<data.length; i++) { var v = data[i]; if (typeof(a[v]) == 'undefined'){ a[v] = 1; } }; data.length=0; for (var i in a){ data[data.length] = i; } return data; }
方法都差不多第三个方法想法还是蛮高明的~
转载于:https://www.cnblogs.com/yy-hh/p/4591852.html
前端面试高频题:删除数组重复元素的多种方法相关推荐
- php array_flip() 删除数组重复元素——大彻大悟
1. php array_flip() 删除数组重复元素,如果用于一维索引数组,好理解. [root@BG-DB:~]$more arr.php <?php $arr = array('a', ...
- php删除数组特定元素,PHP删除数组特定元素的实现方法
这篇文章主要为大家详细介绍了PHP删除数组特定元素的实现方法,具有一定的参考价值,可以用来参考一下. 感兴趣的小伙伴,下面一起跟随512笔记的小玲来看看吧! 方法一: 代码如下: /* 512笔记 w ...
- 数组 去除重复元素 的多种方法
方法一: 两层for循环遍历: 第一次遍历数组中的每一个元素 arr[i] 第二层遍历数组当前元素后的所有元素 arr[j],与当前元素相比较,若 == 当前元素,则删除arr[j],并将循环回退一步 ...
- 力扣217.存在重复元素 使用多种方法
题目描述 给定一个整数数组,判断是否存在重复元素. 如果存在一值在数组中出现至少两次,函数返回 true .如果数组中每个元素都不相同,则返回 false . 示例 示例 1: 输入: [1,2,3, ...
- c语言删除数组重复元素并升序,C语言编程题: 编写函数,从一个已经排序的数组中删去某数后,该数组仍然有序....
满意答案 nanhrui57q 2014.01.10 采纳率:57% 等级:12 已帮助:8634人 #include #include int compear(void *, void *); ...
- 前端面试高频手写代码题
前端面试高频手写代码题 一.实现一个解析URL参数的方法 方法一:String和Array的相关API 方法二: Web API 提供的 URL 方法三:正则表达式+string.replace方法 ...
- web前端面试高频考点——Vue原理(理解MVVM模型、深度/监听data变化、监听数组变化、深入了解虚拟DOM)
系列文章目录 内容 参考链接 Vue基本使用 Vue的基本使用(一文掌握Vue最基础的知识点) Vue通信和高级特性 Vue组件间的通信及高级特性(多种组件间的通信.自定义v-model.nextTi ...
- 面试题:460道Java后端面试高频题答案版「模块九:Spring」
Spring 写在前面 相信对于 Spring 这个模块,只要是做过 Java 开发的同学都是不陌生的,或多或少都使用过 Spring 体系的框架.对于平时自己做点小项目会写配置文件可能就行了,但是对 ...
- 前端面试 100 题:能搞懂80%的请把简历给我
引言 半年时间,几千人参与,精选大厂前端面试高频 100 题,这就是「壹题」. 在 2019 年 1 月 21 日这天,「壹题」项目正式开始,在这之后每个工作日都会出一道高频面试题,主要涵盖阿里.腾讯 ...
最新文章
- TPAMI 2022 | 国防科大等高校提出光场解耦机制,在超分辨与视差估计任务上取得优异性能...
- ng-options渲染的第一项为空的解决办法
- 智能车竞赛技术报告 | 智能车视觉 - 西南科技大学 - 西科二队
- 线性代数里的最小二乘法介绍
- tensorflow 查看graph
- 关于Lucene的自定义Sort排序
- Linux上安装dotnetcore2.0
- python自动化开发教程_Python自动化开发实战视频课程-全新基础篇_Python教程
- Scala集合:Map集合
- OpenCV Dbt人脸检测Dbt face detection的实例(附完整代码)
- Pixhawk代码分析-姿态解算篇D
- 网页上点击java没反应_JavaScript_javascript:void(0)点击登录没反应怎么解决,巧用批处理解决IE不支持JavaScri - phpStudy...
- 可解释性:对神经网络中层特征复杂度的解释与拆分
- 11选5下期算法_双色球 133期预测 132中奖5+1
- spring mvc controller间跳转 重定向 传参
- 方程从pdf转word_在Word中创建化学方程式和图表
- 会员260万,续卡率居高不下,山姆有着怎样的魔力?
- 【2.5TB,磁盘自费】535亿余次HTTP请求,来自IUB的Click数据集
- 建立网站费用大概需要多少钱?如何计算建立网站的成本?
- linux系统的特点有什么
热门文章
- 转载:linux安装rlwrap软件包
- ab plc软件_回收拆机拆厂二手机械设备回收PLC自动化物资回收【研发吧】
- 常见移动机器人运动学模型
- 毕业论文 | 基于MPU6050及卡尔曼滤波的平衡小车设计(源代码与设计文档)
- HTML的五种经典布局方式(二)
- 简述微型计算机的工作原理,高教自学考试微机原理及应用模拟试题
- 工业用微型计算机(16)-指令系统(11)
- python3精要(4)-python数字与表达式1
- 趣学python3(26)-pygame-蛇身运动
- 【机器学习】使用奇异值分解(SVD)构建推荐系统