Javascript中数组查重的方法总结大全
数组查重:简单点说,就是找出数组中重复的元素然后去除,最后得到一个没有重复元素的数组。
// 方法一思路:
1.构建一个新的数组,用于存放结果。
2.for循环中每次从数组取出一个元素,用这个元素与结果数组的中的每个元素相比。
3.若结果数组中没有和取出的元素相同,则存放在结果数组中。
- //自定义函数
- var ret= function(arr){
- var res=[arr[0]];
- for(var j=1;j<arr.length;j++){
- var repeat= false;
- for(var i=0;i<res.length;i++){
- if(arr[j]==res[i]){
- repeat=true;
- break;
- }
- }
- if(!repeat){
- res.push(arr[j]);
- }
- }
- return res;
- };
- var a=[1,3,4,3,5,'aa','bb','aa'];
- document.write(ret(a)); //1,3,4,5,aa,bb
- //或者给数组添加方法
- Array.prototype.ret= function(){
- var res=[this[0]];
- for(var j=1;j<this.length;j++){
- var repeat= false;
- for(var i=0;i<res.length;i++){
- if(this[j]==res[i]){
- repeat=true;
- break;
- }
- }
- if(!repeat){
- res.push(this[j]);
- }
- }
- return res;
- }
- var a=[1,3,4,3,5,'aa','bb','aa'];
- document.write(a.ret()); //1,3,4,5,aa,bb
//方法二思路:(有点:查重效率高;缺点:由于查重之前对数组进行了排序,还回结果也是排序的,如果不改变原数组的顺序去重,那这种方法便不可取了。)
1.首先给原数组进行排序。
2.检查原数组的第i个元素与结果数组的最后一个元素是否相等。因为已经排序,所以重复元素会在相邻位置。
3.如果不相同,则将该元素存入结果数组中。
- //自定义函数
- var ret1= function(arr){
- arr.sort();
- var res= [arr[0]];
- for(var i=1;i<arr.length;i++){
- if(arr[i]!=res[res.length-1]){
- res.push(arr[i]);
- }
- }
- return res;
- }
- var b= [1,3,4,2,3,4];
- document.write(ret1(b)); //1,2,3,4
- //或者给数组添加方法
- Array.prototype.ret1= function(){
- this.sort();
- var res= [this[0]];
- for(var i=1;i<this.length;i++){
- if(arr[i]!=res[res.length-1]){
- res.push(this[i]);
- }
- }
- return res;
- }
- var b= [1,3,4,2,3,4];
- document.write(b.ret1()); //1,2,3,4
/方法三思路:(推荐使用这个方法)
1.定义一个结果数组存放结果。
2.创建一个新对象。
3.for循环的时候,每次取出一个元素与对象对比,如果这个元素不重复则把它放在结果数组里,同时把这个元素的内容作为对象的属性,并赋值为1。
说明:至于如何对比取出的元素与对象,就是每次从原数组取出一个元素,然后到对象中访问这个属性,如果访问到值,则说明重复。
- //自定义函数
- var ret2= function(arr){
- var res=[];
- var json={};
- for(var i=0;i<arr.length;i++){
- if(!json[arr[i]]){
- res.push(arr[i]);
- json[arr[i]]=1;
- }
- }
- return res;
- }
- var c=[1,2,3,2,1];
- document.write(ret2(c)); //1,2,3
- //或者给数组添加方法
- Array.prototype.ret2= function(){
- var res=[];
- var json={};
- for(var i=0;i<this.length;i++){
- if(!json[this[i]]){
- res.push(this[i]);
- json[this[i]]=1;
- }
- }
- return res;
- }
- var c=[1,2,3,2,1];
- document.write(c.ret2()); //1,2,3
Javascript中数组查重的方法总结大全的更多相关文章
- 总结Javascript中数组各种去重的方法
相信大家都知道网上关于Javascript中数组去重的方法很多,这篇文章给大家总结Javascript中数组各种去重的方法,相信本文对大家学习和使用Javascript具有一定的参考借鉴价值,有需要的 ...
- JavaScript中数组Array.sort()排序方法详解
JavaScript中数组的sort()方法主要用于对数组的元素进行排序.其中,sort()方法有一个可选参数.但是,此参数必须是函数. 数组在调用sort()方法时,如果没有传参将按字母顺序(字符编 ...
- javascript中数组的22种方法
× 目录 [1]对象继承 [2]数组转换 [3]栈和队列[4]数组排序[5]数组拼接[6]创建数组[7]数组删改[8]数组位置[9]数组归并[10]数组迭代[11]总结 前面的话 数组总共有22种方法 ...
- javascript中数组的22种方法 (转载)
前面的话 数组总共有22种方法,本文将其分为对象继承方法.数组转换方法.栈和队列方法.数组排序方法.数组拼接方法.创建子数组方法.数组删改方法.数组位置方法.数组归并方法和数组迭代方法共10类来进行详 ...
- javascript中数组和字符串的方法比较
× 目录 [1]可索引 [2]转换 [3]拼接[4]创建[5]位置 前面的话 字符串和数组有很多的相同之处,它们的方法众多,且相似度很高:但它们又有不同之处,字符串是不可变值,于是可以把其看作只读的数 ...
- javascript中数组的深拷贝的方法
一.什么是浅拷贝 在js当中,我们常常遇到数组复制的的情况,许多人一般都会使用"="来直接把一个数组赋值给一个变量,如 var a=[1,2,3]; var b=a; consol ...
- JavaScript中数组相关的属性方法
下面的这些方法会改变调用它们的对象自身的值: Array.prototype.copyWithin() 在数组内部,将一段元素序列拷贝到另一段元素序列上,覆盖原有的值. Array.prototype ...
- JavaScript中数组Array方法详解
ECMAScript 3在Array.prototype中定义了一些很有用的操作数组的函数,这意味着这些函数作为任何数组的方法都是可用的. 1.Array.join()方法 Array.join()方 ...
- JavaScript中数组常用方法的总结
JavaScript中数组Array常用的方法总结 标签(空格分隔): JavaScript ECMAScript数组给我们提供了许多常用的方法,便于我们对数组进行操作,下面,就来总结一下这些方法. ...
随机推荐
- VBA运算符(九)
运算符可以用一个简单的表达式定义,例如:4 + 5等于9.这里,4和5称为操作数,+被称为运算符.VBA支持以下类型的运算符 - 算术运算符 比较运算符 逻辑(或关系)运算符 连接运算符 算术操作符 ...
- [书籍翻译] 《JavaScript并发编程》 第二章 JavaScript运行模型
本文是我翻译<JavaScript Concurrency>书籍的第二章 JavaScript运行模型,该书主要以Promises.Generator.Web workers等技术来讲解J ...
- elment 中tree组件展开所有和收缩所有
upAll () { // 全部展开 遍历变成true let self = this; // 将没有转换成树的原数据 let treeList = this.sourceData; for (let ...
- 线段树lazy模板 luogu3372
线段树写得很少,这么基本的算法还是要会的…… #include<bits/stdc++.h> using namespace std; inline long long read() { ...
- Ubuntu18.0 解决python虚拟环境中不同用户下或者python多版本环境中指定虚拟环境的使用问题
一. 不同用户下配置virtualenvwrapper的问题 问题描述: 安装virtualnev和virtualnevwrapper之后,在.bashrc进行virtualenvwrapper的相关 ...
- 文本三剑客之grep及正则表达式
1.grep 1. 什么是grep.egrep和fgrep Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来(匹配到的标红).grep全称是Glo ...
- 什么是微服务 Martin Fowler的microservices
https://martinfowler.com/articles/microservices.html https://martinfowler.com/microservices/ 微服务,最早由 ...
- PAT Basic 1089 狼人杀-简单版 (20 分)
以下文字摘自<灵机一动·好玩的数学>:“狼人杀”游戏分为狼人.好人两大阵营.在一局“狼人杀”游戏中,1 号玩家说:“2 号是狼人”,2 号玩家说:“3 号是好人”,3 号玩家说:“4 号是 ...
- Octave(控制语句)
for循环遍历 >> v = zeros(,) v = >> v() ans = >> :, v(i) = ^i; end; >> v v = 或者: ...
- 使用pyinstaller打包使用scrapy模块的程序运行时出现No such file or directory的问题解决
解决的方案是利用pyinstaller的hook特性,步骤如下: 1.在项目目录新建hooks目录,目录中新建hooks-scrapy.py 文件,文件内容如下: from PyInstaller.u ...