JavaScript数组去重方法总结
一、双重遍历去重
function onlyFigure(arr) {
let newarr = [];
const length = arr.length
for (let i = 0; i < length; i++) {
for(let j = i + 1; j < length; j++) {
if(arr[i] === arr[j]) {
i++;
j=i;
}
}
newarr.push(arr[i])
}
console.log(newarr);
}
onlyFigure([0,0,1,2,4,2,1,6,5]);
二、原数组下标indexOf去重
function onlyFigure(arr) {
let newarr = [];
for (let i = 0; i < arr.length; i++) {
if(arr.indexOf(arr[i]) == i) {
//console.log(arr.indexOf(arr[i]));
newarr.push(arr[i]);
}
}
console.log(newarr);
}
onlyFigure([0,0,1,2,4,2,1,6,5]);
三、新数组indexOf去重
function only(arr) {
let newarr = [];
let len = arr.length;
for(let i = 0 ; i < len ; i ++ ) {
if(newarr.indexOf(arr[i]) === -1) {
newarr.push(arr[i])
}
}
return newarr
}
四、es6 Set去重
function onlyNum(arr) {
return Array.from(new Set(arr))
}
五、for...of + Object
利用对象的属性不会重复这一特性,校验数组元素是否重复
function distinct(arr) {
let result = []
let obj = {}
for (let i of arr) {
if (!obj[i]) {
result.push(i)
obj[i] = 1
}
}
return result
}
参考(引用)链接:https://www.cnblogs.com/wisewrong/archive/2018/09/20/9642264.html
JavaScript数组去重方法总结的更多相关文章
- JavaScript数组去重方法及测试结果
最近看到一些人的去面试web前端,都说碰到过问JavaScript数组去重的问题,我也学习了一下做下总结. 实际上最有代表性也就三种方法:数组双重循环,对象哈希,排序后去重. 这三种方法我都做了性能测 ...
- JavaScript 数组去重方法总结
1.遍历数组法: 这应该是最简单的去重方法(实现思路:新建一新数组,遍历数组,值不在新数组就加入该新数组中) // 遍历数组去重法 function unique(arr){ var _arr = [ ...
- JavaScript 数组去重 方法汇总
<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8&quo ...
- javaScript数组去重方法
在JAvascript平时项目开发中经常会用到数组去重的操作.这时候就要用到JS数组去重的方法了. demo1: 第一种:JS数组去重操作方法是利用遍历原数组,利用数组的indexOf()方法来来判断 ...
- JavaScript数组去重方法汇总
1.运用数组的特性 1.遍历数组,也遍历辅助数组,找出两个数组中是否有相同的项,若有则break,没有的话就push进去. //第一版本数组去重 function unique(arr){ var r ...
- JavaScript实现数组去重方法
一.利用ES6 Set去重(ES6中最常用) function unique (arr) { return Array.from(new Set(arr)) } var arr = [1,1,'tru ...
- JavaScript数组去重的几种方法
这个老问题,网上普遍都有了,为什么要再写一遍呢,主要是为了记个笔记... 遍历时搜索结果数组 思路很明确,如下 新建一个数组存放结果 循环遍历原数组,对于每一个元素,在结果数组中搜索是否存在 若不存在 ...
- [转] JavaScript数组去重(12种方法)
数组去重,一般都是在面试的时候才会碰到,一般是要求手写数组去重方法的代码.如果是被提问到,数组去重的方法有哪些?你能答出其中的10种,面试官很有可能对你刮目相看.在真实的项目中碰到的数组去重,一般都是 ...
- 也谈面试必备问题之 JavaScript 数组去重
Why underscore (觉得这部分眼熟的可以直接跳到下一段了...) 最近开始看 underscore.js 源码,并将 underscore.js 源码解读 放在了我的 2016 计划中. ...
随机推荐
- angularjs 异步请求无法更新数据
angularjs 有个问题就是第二次ajax请求数据再次赋值给 $scope.data,需要更新视图数据的时候,却不能更改视图数据,这个是因为angularjs的$watch不能监听到JS对$sco ...
- express链接mysql, 用数据库连接池管理链接
1.在API的开发当中,数据库的处理显得尤为重要,express 工程 链接mysql数据库有很好的模板可以借鉴. 1.1 创建数据库链接 新建一个DB目录,在DB目录下新建文件 db.js 内容如下 ...
- zabbix设置中文并解决乱码问题
1.登录页面,设置中文 如下 2.解决乱码 进入本地PC的C:\Windows\Fonts,找到微软雅黑字体,复制粘贴,粘贴默认会生成两个文件 将msyh.ttf文件上传至zabbix服务器/usr/ ...
- Chap4:探究操作系统[The Linux Command Line]
1 learn some more commands: (1) ls-List directory contents (2) file -Determine file type (3) less-Vi ...
- 列表的pop()和路径拼接问题
我竟然发现了新大陆,感觉对列表已经啥也不清楚了 #pop()删除最后一项 l=[1,2,3] a=l.pop(-1) print(a) print(l) 结果: 3 [1, 2] 练习题:计算文件夹的 ...
- Altium Designer 绘图流程及快捷键
1.Shift+Ctrl+g 设置栅格捕捉大小 2.Q 切换单位 3.E+N +点击字体 改变字体大小 4.自动布线前需在Mechanical 层和keepout层添加一个边框 5.打过孔实现双面走线 ...
- LeetCode 985 Sum of Even Numbers After Queries 解题报告
题目要求 We have an array A of integers, and an array queries of queries. For the i-th query val = queri ...
- centos 安装ss
yum install python-setuptools && easy_install pip pip install shadowsocks vi /etc/shadowsock ...
- No converter found for return value of type
springMVC请求接口的时候报500 No converter found for return value of type 原因:这是因为springmvc默认是没有对象转换成json的转换器 ...
- myeclipse项目导入到eclipse, HttpServletRequest报红现象
eclipse项目中关于导入的项目里提示HttpServletRequest 不能引用的解决办法 当使用eclipse导入外部的web工程时,有时会提示HttpServletRequest, Serv ...