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 计划中. ...
随机推荐
- a标签伪类选择器+过度模块
a标签的伪类选择器 1.什么是a标签的伪类选择器?a标签的伪类选择器是专门用来修改a标签不同状态的样式的. 2.格式: 1):link 修改从未被访问过状态下的样式. 2):visited 修改被访问 ...
- Unity3D获取Android平台的电量
刚开始的时候以为这个应该不简单.我也开始百度,寻找获取手机的电量的方法.大概有俩种方式:一种是直接访问一个文件,意思是说Android手机的电量等信息保存到了这个文件中.但是我试验的时候没有访问出来, ...
- mysql union all limit的使用
To apply ORDER BY or LIMIT to an individual SELECT, place the clause inside the parentheses that enc ...
- SQLServer string_split函数,撕裂函数,撕开函数
declare @name char(1000) --注意:char(10)为10位,要是位数小了会让数据出错 set @name='s{sss}fc{fggh}dghdf{cccs}x' selec ...
- Typescript 开发环境的最佳实践
Typescript 开发环境的最佳实践 0️⃣ git init(略) 1️⃣️️ 初始化:$ yarn add -D ts-node typescript 2️⃣ 生成 tsconfig.json ...
- Xamarin图表开发基础教程(4)OxyPlot框架
Xamarin图表开发基础教程(4)OxyPlot框架 XamaminAndroid中绘制线图OxyPlotAndroidDemo [示例1-1:OxyPlotAndroidDemo]下面实现线图的绘 ...
- 【Shell常用命令一】echo bash alias history 输出重定向 快捷键
echo输出命令 echo [选项] [输出内容] -e : 支持反斜线控制的字符转换 赋予执行权限 直接运行 chmond 755 hello.sh ./hello.sh 通过bash调用执行脚本 ...
- aligin-items与aligin-content的区别
align-items 属性使用于所有的flex容器,它是用来设置每个flex元素在侧轴上的默认对齐方式 aligin-items 与align-content有相同的功能,不过不同点是它是用来让每一 ...
- [LeetCode] 157. Read N Characters Given Read4 用Read4来读取N个字符
The API: int read4(char *buf) reads 4 characters at a time from a file.The return value is the actua ...
- [LeetCode] 452. Minimum Number of Arrows to Burst Balloons 最少箭数爆气球
There are a number of spherical balloons spread in two-dimensional space. For each balloon, provided ...