每日分享!~ JavaScript数组去重
数组去重
数组去重在很多面试的过程中,都是大题出现!网络上出现了很多数组去重的方式。多数的达到了12种以上。
今天我只给大家介绍两种我比较喜欢,比较认可!入手简单的~能解决自己的问题就可以了
好了 ,不多bb,直接上代码:
方式1: indexOf
<script>
// 业务要求
/**
数组的去重
**/ // 方式1 使用indexof方式
function ClearArray(arr){
// 创建一个新的数组来存放去重之后的数组
var newArr = []
// 将传入数组进行循环遍历处理
arr.forEach(item => {
// 使用indexof 判断newArr中数组是否存在,不存在的话直接push进去
if ( newArr.indexOf(item) === (-1)) {
newArr.push(item)
}
})
return newArr
}
// 测试数组
var arr = [1,3,4,5,6,4,33,3,3,,4,3]
console.log(ClearArray(arr))
//结果 [1, 3, 4, 5, 6, 33]
</script>
注意:这个判断是对于定义新数组去判断,不是对需要判断对数组。
总结,利用indexOf方法判断新数组中是否存在该元素,不存在的话,push 到新数组中去,如果push过,在次判断的时候,就会显示存在,这样就会直接跳过。
----------------------------------------黄金分割线---------------------------------------------------------------
方式2 splice()
直接上代码:
function ClearArray(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 该元素
return arr
}
var arr = [1,3,4,5,6,4,33,3,3,,4,3]
console.log(ClearArray(arr))
// 结果 [1, 3, 4, 5, 6, 33, empty]
注意, 这个方式是通过二次循环来判断,一个元素同其他元素对比。如果与该元素相同的话,则需要通过splice方法,去掉该元素。
-----------------------------分割线------------------------------------------
总结以上两种方法的差异:
相信大家通过结果。关注了两个方式的结果不一致,第一个结果去重:将空元素都去掉了。第二个方式没有,而是显示的empty 。
如果该元素不需要空元素的话,建议使用第一种方式。如果需要的话, 建议使用第二种方式。
每日分享!~ JavaScript数组去重的更多相关文章
- 也谈面试必备问题之 JavaScript 数组去重
Why underscore (觉得这部分眼熟的可以直接跳到下一段了...) 最近开始看 underscore.js 源码,并将 underscore.js 源码解读 放在了我的 2016 计划中. ...
- javascript数组去重算法-----3
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- javascript数组去重算法-----2
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- javascript数组去重算法-----1
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- javascript数组去重算法-----5
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- javascript数组去重算法-----4(另一种写法__2)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- javascript数组去重算法-----4(另一种写法)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- javascript数组去重算法-----4
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- JavaScript数组去重方法及测试结果
最近看到一些人的去面试web前端,都说碰到过问JavaScript数组去重的问题,我也学习了一下做下总结. 实际上最有代表性也就三种方法:数组双重循环,对象哈希,排序后去重. 这三种方法我都做了性能测 ...
- JavaScript 数组去重方法总结
1.遍历数组法: 这应该是最简单的去重方法(实现思路:新建一新数组,遍历数组,值不在新数组就加入该新数组中) // 遍历数组去重法 function unique(arr){ var _arr = [ ...
随机推荐
- Java 并行与并发
Java 并行与并发 注意两个词:并行(Concurrent) 并发(Parallel) 并行:是逻辑上同时发生,指在某一个时间内同时运行多个程序 并发:是物理上同时发生,指在某一个时间点同时运行多个 ...
- DUBBO报错分析—1(连接zookeeper成功,调用方法无反应,不报错)
思路分析 调用方法时,最后调用执行的是mapper的sql语句,既然调用对应的方法无法获取返回值,多是sql错误,但是并未报sql错误,说明可能是与sql相关的数据源配置错误. 过程调试 经尝试,当直 ...
- jQuery学习之旅 Item9 动画效果
1.元素的显示和隐藏 display:none; 隐藏 display:block; 显示 简单显示和隐藏方法 a) show() 显示 b) hide() 隐藏 c) toggle() 开关,显示则 ...
- 『网络の转载』px与em的区别
这里引用的是Jorux的“95%的中国网站需要重写CSS”的文章,题目有点吓人,但是确实是现在国内网页制作方面的一些缺陷.我一直也搞不清楚px与em之间的关系和特点,看过以后确实收获很大.平时都是用p ...
- Linux用户和组管理,添加修改用户,添加修改组,加入组,移除组
1.安全介绍3A Authentication: 认证,用户名和对应口令 Authorization: 授权,不同用户权限不同 Accouting/Audition: 审计 2. 所属者和所属组 us ...
- testng增加失败重跑机制
注: 以下内容引自 http://www.yeetrack.com/?p=1015 testng增加失败重跑机制 Posted on 2014 年 10 月 31 日 使用Testng框架搭建自动测试 ...
- Java 学习笔记 (四) Java 语句优化
这个问题是从headfirst java看到的. 需求: 一个移动电话用的java通讯簿管理系统,要求最有效率的内存使用方法. 下面两段程序的优缺点,哪个占用内存更少. 第一段: Contact[]c ...
- Firefox Profile (2)
一些关于selenium copy Firefox profile to a temp directory的讨论 https://stackoverflow.com/questions/6787095 ...
- 字符串匹配KMP算法的讲解C++
转自http://blog.csdn.net/starstar1992/article/details/54913261 也可以参考http://blog.csdn.net/liu940204/art ...
- BZOJ_1076_[SCOI2008]奖励关_状压DP
BZOJ_1076_[SCOI2008]奖励关_状压DP 题意: 你正在玩你最喜欢的电子游戏,并且刚刚进入一个奖励关.在这个奖励关里,系统将依次随机抛出k次宝物, 每次你都可以选择吃或者不吃(必须在抛 ...