js对数组去重的方法总结-(2019-1)
最近待业在家,系统地学习了一套js的课程。虽然工作时间真的比较长了,但有些东西只局限在知其然而不知其所以然的程度上,有些知识点通过“血和泪”的经验积累下来,也只是记了结果并没有深究,所以每次听完课都有些收获。
现在进入正题,相信很多面试者会被问到这样一道题(我就碰到过至少2次),js实现数组(只有正整数)去重有几种方法?最直接的想到的应该是双层循环进行比对,不等于push,等于不做处理,最后返回得到新数组就是去重后的数组,以下是代码:
var x = [1,2,3,4,1,4,3,5,2];
var y = [];
for(var i = 0;i < x.length; i++){
for(var j = 0;j < y.length;j++){
if(y[j] === x[i]){
break;
}
}
if(j == y.length){
y.push(x[i]);
}
}
console.log(y.join(''));
第二种方法,一般人也可以想到,就是先将数组排序,然后判断相邻的两个元素是否相等,等于忽略,不等于push,代码是:
var x = [1,2,3,4,1,4,3,5,2];
var y = [];
var newx = x.sort();
y.push(newx[0]);
for(var i=1;i<newx.length;i++){
if(newx[i] != newx[i-1]){
y.push(newx[i])
}
}
console.log(y.join(''));
第三种方法可能一般就不会想到,也很简单,就是使用对象的属性,将数组中的元素当做对象的key,key重复会被覆盖,然后再用for in把key遍历出来,实现代码是:
var x = [1,2,3,4,1,4,3,5,2];
var y = [];
var arrMap = [];
for(var i = 0;i < x.length;i++){
arrMap[x[i]] = true;
}
for(var j in arrMap){
y.push(+j);
}
console.log(y.join(''));
值得注意的是这种方法会把数组元素转换为字符串,所以y.push(+j);“+”是将字符串又转换为整数。
如果问题升级,不只是整数,里面可能会包含布尔值,字符串,甚至undefined、null等,怎么办呢?第一种方法是完全适合的(判断一定要有严格等于===),而后两种就需要在之前做一些处理,遍历数组,根据元素类型将元素分成几部分,再将每部分做以上处理,最后再合并。
2019年第一篇over!
js对数组去重的方法总结-(2019-1)的更多相关文章
- js中数组去重的方法
在实际工作或面试中,我们经常会遇到"数组去重"问题,接下来就是使用js实现的数组去重的多种方法: 1.借助ES6提供的Set结构 var arr = [1,1,2,2,3,3,4, ...
- JS实现数组去重的方法(6种)
方法一: 双层循环,外层循环元素,内层循环时比较值 如果有相同的值则跳过,不相同则push进数组 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 Arra ...
- JS实现数组去重的方法
1.使用ES6的Set进行去重 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"&g ...
- js中数组去重的几种方法
js中数组去重的几种方法 1.遍历数组,一一比较,比较到相同的就删除后面的 function unique(arr){ ...
- JS实现数组去重方法大总结
js数组根据对象中的元素去重: var arr2 = [ { name: "name1", num: "1" }, { name: "name2&qu ...
- Js对于数组去重提高效率一些心得
最近在找工作,好几次面试都问过数组去重的问题.虽然问的都不一样,但是核心思想是没有变的. 第一种是比较常规的方法 思路: 构建一个新的数组存放结果 for循环中每次从原数组中取出一个元素,用这个元素循 ...
- JS实现数组去重方法整理
前言 我们先来看下面的例子,当然来源与网络,地址<删除数组中多个不连续的数组元素的正确姿势> 我们现在将数组中所有的‘ a’ 元素删除: var arr = ['a', 'a', 'b', ...
- js数组去重的方法(转)
JS数组去重的几种常见方法 一.简单的去重方法 // 最简单数组去重法 /* * 新建一新数组,遍历传入数组,值不在新数组就push进该新数组中 * IE8以下不支持数组的indexOf方法 * */ ...
- js中数组去重方法及性能对比
js中数组的 数组去重 常用的数组去重方法以及效率分析: 首先我们先构建一个数组,主要是用于进行去重实验,我们主要实验的量级为1000,10000,100000,500000.具体的生成数组的方法如下 ...
随机推荐
- Python - 输入和输出 - 第十七天
Python 输入和输出 在前面几个章节中,我们其实已经接触了 Python 的输入输出的功能.本章节我们将具体介绍 Python 的输入输出. 输出格式美化 Python两种输出值的方式: 表达式语 ...
- pip下载速度慢解决方法
添加镜像链接 解决方式: 更改pip的数据源.目前国内比较知名的有豆瓣的,清华的.都是pipy官网的镜像. 清华:https://pypi.tuna.tsinghua.edu.cn/simple 阿里 ...
- Java学习——泛型
Java学习——泛型 摘要:本文主要介绍了什么是泛型,为什么要用泛型,以及如何使用泛型. 部分内容来自以下博客: https://www.cnblogs.com/lwbqqyumidi/p/38376 ...
- Celery 异步队列
Celery Celery是一个功能完备即插即用的异步任务队列系统.它适用于异步处理问题,当发送邮件.或者文件上传, 图像处理等等一些比较耗时的操作,我们可将其异步执行,这样用户不需要等待很久,提高用 ...
- Qt压缩和解压 zip
zlib编译详见 https://blog.csdn.net/zhangxuechao_/article/details/85049711 下载quazip https://github.com/st ...
- flink 实现三角枚举EnumTriangles算法详解
1.三角枚举,从所有无向边对中找到相互连接的三角形 /** * @Author: xu.dm * @Date: 2019/7/4 21:31 * @Description: 三角枚举算法 * 三角枚举 ...
- PHP严重致命错误处理:php Fatal error: Cannot redeclare class or function【转】
这篇文章主要介绍了PHP严重致命错误处理:php Fatal error: Cannot redeclare class or function,需要的朋友可以参考下 1.错误类型:PHP致命错误 E ...
- Python 爬虫之 Beautifulsoup4,爬网站图片
安装: pip3 install beautifulsoup4 pip install beautifulsoup4 Beautifulsoup4 解析器使用 lxml,原因为,解析速度快,容错能力强 ...
- JMETER 使用随机变量
使用场景 在发起流程时,我们需要模拟实际情况,不同的用户可以产生不一样数量的流程实例,因此我们可以使用随机变量还进行模拟. 随机变量实例 1.添加一个循环计数器 2.添加一个循环 循环次数是根据随机变 ...
- 10wx.showToast消息提示框 wx.showModal模态对话框
1==>wx.showToast 弹出层 在界面交互中 显示消息提示框 它是一个消失提示框 提示用户成功 或者失败等消息 <button size='mini' bindtap='hanl ...