js 数组去重常见的几种方式
- 1.利用标记
var arr = [2,6,2,6,4,3,16];// arr = [2,6,4,3,16]
function norepeat(arr){
var res = [];
for(var i=0;i<arr.length;i++){
var flag = true;
for(var j=0;j<res.length;j++){
if(arr[i]==res[j]){
flag = false;//将要推入新数组的数组元素 在新数组中有重复
}
}
if(flag){
res.push(arr[i]);
}
}
return res;
}
console.log(norepeat(arr));- 2.indexOf()找对应的下标
function norepeat(arr){
var newArr = [];
for(var i=0;i<arr.length;i++){
if(newArr.indexOf(arr[i]) == -1){
newArr.push(arr[i]);
}
}
return newArr;
}
var arr = [1,2,3,5,6,1,2,5];
console.log(norepeat(arr));- 3.Es5迭代方法filter() +indexOf
var arr = [1, 2, 3, 1, 2, 3, 5, 6, 4, 5];
var newArr = arr.filter(function(value, index, array) {
console.log(value,index,array);
return arr.indexOf(value) == index;
})
alert(newArr);- 4.利用快速排序去重(比较麻烦的一种啦)
function quickSort(arr) {
if(Array.isArray(arr)) { //先判断是不是个数组
if(arr.length <= 1) { //设置限定条件
return arr;
}
var left = [];
var right = [];
var midIndex = Math.floor(arr.length / 2); //找中间索引
var midValue = arr.splice(midIndex, 1); //找中间值
for(var j = 0; j < arr.length; j++) {
if(arr[j] < midValue) {
left.push(arr[j]);
}
if(arr[j] > midValue){
right.push(arr[j]);
}
}
return quickSort(left).concat(midValue, quickSort(right)); //递归直至数组长度为1 } else {
alert('请传个数组');
}
}
var arr1 = [6, 2, 5, 7, 21, 1,2,5];
console.log(quickSort(arr1));
js 数组去重常见的几种方式的更多相关文章
- JavaScript数组去重—ES6的两种方式
说明 JavaScript数组去重这个问题,经常出现在面试题中,以前也写过一篇数组去重的文章,(JavaScript 数组去重的多种方法原理详解)但感觉代码还是有点不够简单,今天和大家再说两种方法,代 ...
- JS数组遍历的十二种方式
遍历有如下几种方式 数组方法 map forEach filter find findIndex every some reduce reduceRight 其他方法 for for in for o ...
- 【js】js数组置空的三种方式
方式1: var arr = new Array(1,2,3); alert(arr); arr.splice(0, arr.length); alert(arr); 方式2: var arr = n ...
- JS数组去重的几种常见方法
JS数组去重的几种常见方法 一.简单的去重方法 // 最简单数组去重法 /* * 新建一新数组,遍历传入数组,值不在新数组就push进该新数组中 * IE8以下不支持数组的indexOf方法 * */ ...
- js数组去重的4种方法
js数组去重,老生长谈,今天对其进行一番归纳,总结出来4种方法 贴入代码前 ,先对浏览器Array对象进行支持indexOf和forEach的polyfill Array.prototype.inde ...
- js数组去重五种方法
今天来聊一聊JS数组去重的一些方法,包括一些网上看到的和自己总结的,总共5种方法(ES5). 第一种:遍历数组法 这种方法最简单最直观,也最容易理解,代码如下: var arr = [2, 8, 5, ...
- JS数组去重的6种算法实现
1.遍历数组法 最简单的去重方法,实现思路:新建一新数组,遍历传入数组,值不在新数组就加入该新数组中:注意点:判断值是否在数组的方法"indexOf"是ECMAScript5 方法 ...
- js数组去重常用方法
js数组去重是面试中经常会碰到的问题,无论是前端还是node.js数组常见的有两种形式,一种是数组各元素均为基本数据类型,常见的为数组字符串格式,形如['a','b','c'];一种是数组各元素不定, ...
- JS 数组去重(数组元素是对象的情况)
js数组去重有经典的 几种方法 但当数组元素是对象时,就不能简单地比较了,需要以某种方式遍历各值再判断是否已出现. 因为: 1.如果是哈希判断法,对象作哈希表的下标,就会自动转换成字符型类型,从而导致 ...
随机推荐
- php.ini 中文详解
[PHP] ; PHP还是一个不断发展的工具,其功能还在不断地删减 ; 而php.ini的设置更改可以反映出相当的变化, ; 在使用新的PHP版本前,研究一下php.ini会有好处的 ;;; ...
- 蓝桥杯 基础练习 之 FJ的字符串
问题描述 FJ在沙盘上写了这样一些字符串: A1 = "A" A2 = "ABA" A3 = "ABACABA" A4 = "AB ...
- 使用CentOS7配置Squid代理
其实之前配过一个squid,只是由于太懒,网上随便搜了一个教程,用了默认端口并且没有添加用户认证.某天不幸的被爬虫扫到,被用来发了半个月的垃圾邮件..直到有一天登录邮箱,看到了一大坨警告邮件,才意识到 ...
- php实现301跳转
php实现301跳转代码 <?php Header("HTTP/1.1 301 Moved Permanently"); Header("Location: htt ...
- 用node.js搭建本地服务器
我的第一篇笔记来写写node.js,我对node.js的并不是很了解,基本的项目路径变换还是会的.原先我下载node.js就是我想学vue.js,后来因为工作的繁忙搁浅了我的计划.最近在学习phase ...
- Spring Boot:Consider defining a bean of type '*.*.*' in your configuration解决方案
果然不看教程直接使用在遇到问题会懵逼,连解决问题都得搜半天还不一定能帮你解决了... ***************************APPLICATION FAILED TO START*** ...
- 高性能javascript笔记
----------------------------------------------------------- 第一章 加载和执行 ------------------------------ ...
- PHP秒杀系统全方位设计(一)
秒杀系统特点人多商品少时间短流量高外挂机器[黄牛和非黄牛] 技术分析瞬间高并发的处理能力多层次的分布式处理能力人机交互与对抗[12306验证码图片] 技术选型分析Linux+Nginx+PHP+Mys ...
- jsp去除空行的web.xml配置
在jsp中我们引入的标签,例如jstl的标签,循环遍历等等,可能会产生很多空行,其实也没什么,不会影响展示,但是空行多多少少会影响性能,这是我们只需要在web.xml中配置一下我们就可以很简单的去掉, ...
- ARC068E - Snuke Line
原题链接 题意简述 给出个区间和.求对于任意,有多少个区间包含的倍数. 题解 考虑怎样的区间不包含的倍数. 对于的倍数和,满足的区间不包含任何的倍数. 于是转化为二维数点问题,可以用可持久化线段树解决 ...