JavaScript 数组去重的那几种方法
数组去重是最常见的面试题,现在总结一下我所知道的几种
首先第一个就是es5 最常见的循环比较
var array= [1, 1, 2];
function test(nums) {
for (var i = 0; i < nums.length; i++) {
for (var j = i + 1; j < nums.length; j++) {
if (nums[i] === nums[j]) {
nums.splice(j, 1);
j--;
}
}
}
console.log(nums); }
test(array)
第二种就是 ES6 的set 方法
var nums = [1, 1, 2];
function test(nums) {
var set = new Set(nums);
console.log(set);
}
test(array)
第三种就是利用 indexOf 获取下标的方式来进行判断
var nums = [1, 1, 2];
function test(nums) {
var arr = [];
for (var i = 0; i < nums.length; i++) {
if (arr.indexOf(nums[i]) === -1) {
arr.push(nums[i]);
}
}
console.log(arr);
}
test(array)
第四种则是利用对象的特殊属性来进行判断
var nums = [1, 1, 2];
function test(nums) {
var obj = {};
var arr = [];
for (let i = 0; i < nums.length; i++) {
if (!obj[nums[i]]) {
obj[nums[i]] = 1;
arr.push(nums[i]);
}
}
console.log(arr);
}
test(array)
第五种使用 数组的 includes 来进行筛选
var nums = [1, 1, 2];
function test(nums) {
let arr = [];
for (let i = 0; i < nums.length; i++) {
if (!arr.includes(nums[i])) {
arr.push(nums[i]);
}
}
console.log(arr);
}
test(array)
第六种方法则是利用原型上的 forEach 来进行筛选
var nums = [1, 1, 2];
function test(nums) {
var arr = [];
nums.forEach(item => {
arr.includes(item) ? "" : arr.push(item);
});
console.log(arr);
}
test(array)
第七种则是先进行排序,然后再拿每一项和它的后面那一项进行比较,如果不同则加入新的数组
var nums = [1, 1, 2];
function test(nums) {
var arr = [];
var oldArr = nums.sort();
for (let i = 0; i < oldArr.length; i++) {
if (oldArr[i] != oldArr[i + 1]) {
arr.push(oldArr[i]);
}
}
console.log(arr);
}
test(array)
第八种就是利用 数组的 filter 进行过滤
var nums = [1, 1, 2];
function test(nums) {
var newArr = nums.filter((item, index, arr) => {
return arr.indexOf(item) === index;
});
console.log(newArr);
}
test(array)
JavaScript 数组去重的那几种方法的更多相关文章
- JavaScript数组去重—ES6的两种方式
说明 JavaScript数组去重这个问题,经常出现在面试题中,以前也写过一篇数组去重的文章,(JavaScript 数组去重的多种方法原理详解)但感觉代码还是有点不够简单,今天和大家再说两种方法,代 ...
- JavaScript数组去重方法及测试结果
最近看到一些人的去面试web前端,都说碰到过问JavaScript数组去重的问题,我也学习了一下做下总结. 实际上最有代表性也就三种方法:数组双重循环,对象哈希,排序后去重. 这三种方法我都做了性能测 ...
- javaScript数组去重方法
在JAvascript平时项目开发中经常会用到数组去重的操作.这时候就要用到JS数组去重的方法了. demo1: 第一种:JS数组去重操作方法是利用遍历原数组,利用数组的indexOf()方法来来判断 ...
- JavaScript 数组去重方法总结
1.遍历数组法: 这应该是最简单的去重方法(实现思路:新建一新数组,遍历数组,值不在新数组就加入该新数组中) // 遍历数组去重法 function unique(arr){ var _arr = [ ...
- JavaScript 数组去重 方法汇总
<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8&quo ...
- JavaScript数组去重的7种方式
1.利用额外数组 function unique(array) { if (!Array.isArray(array)) return; let newArray = []; fo ...
- 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 数组去重
Why underscore (觉得这部分眼熟的可以直接跳到下一段了...) 最近开始看 underscore.js 源码,并将 underscore.js 源码解读 放在了我的 2016 计划中. ...
随机推荐
- 使用IDEA查看变量调用链
在开发中,我们有时需要查看某个变量是怎么来的,从哪个类的某个方法调用后进入另一个类的某个方法. 如果只有一两层的调用,那么还能直接通过方法跳转来观察. 但是,如果有七八层的调用链呢,在各个方法之间跳来 ...
- ACR Code Pacs
ACR Index for Radiological Diagnosis 简称ACR Index,ACR Key或ACR Code,是一种应用于影像学分类的病理编码,由美国放射学院(American ...
- git 只提交部分修改文件
1.git status //查看修改文件状态 2.git add //将想要提交的文件add到本地库 4.git status //查看修改文件状态 3.git commit //提交add到 ...
- 000 list与map的foreach使用
一:list的使用 1.程序 package com.jun.it.java8; import java.util.ArrayList; import java.util.List; public c ...
- uni-app v-for循环遍历 动态切换class、动态切换style
动态切换class,主要代码::class="i.themColor" <view v-for="i in htmlJSON" class=" ...
- springboot使用SpringTask实现定时任务
SpringTask是Spring自主研发的轻量级定时任务工具,相比于Quartz更加简单方便,且不需要引入其他依赖即可使用. 只需要在配置类中添加一个@EnableScheduling注解即可开启S ...
- EasyNVR摄像机网页Chrome无插件视频播放功能二次开发之通道配置文件上传下载示例代码
背景需求 熟悉EasyNVR产品的朋友们都知道,产品设计初期根据整个直播流程层级,我们将EasyNVR无插件直播系统划分为:硬件层.能力层.应用层,连接硬件与应用之间的桥梁,同时屏蔽各种厂家硬件的不同 ...
- powershell字符串操作
字符串操作是powershell中重要的一项操作,学会使用字符串操作的一些常用方法会大大提高脚本编写效率,以下列出几个经常用到的字符串操作方法: 前提:本人的powershell版本是 1.字符串格式 ...
- VS 2015main函数带参数的调试
最近学习pcl,学习C++,今天让main的参数接收数据,想起没用过这样的,不知道怎么在vs里面调试 因此找了下方法,并记录下来 代码 #include<iostream> int mai ...
- pip修改成国内镜像源
临时指定镜像源 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple seaborn 永久修改镜像源 linux下,修改 ~/.pip/pip ...