zoukankan      html  css  js  c++  java
  • 数组去重

       数组去重在前端工作中是必不可少的,接下来我就总结了个人常用的几种方式

    一. ES5环境书写

    1. 传统方式:效率不是是很高

    var data = [1,3,2,1,2];
    Array.prototype.unique = function(){
    	for(var i=0,arr=[],len=this.length;i<len;i++){
    		var item = this[i];
    		if(arr.indexOf(item) == -1) arr.push(item);
    	}
    	return arr;
    };
    Array.prototype.indexOf = function(n){
    	for(var i=0,len=this.length;i<len;i++){
    		if(this[i] == n) return i; 
    	}
    	return -1;
    };
    console.log(data.unique());
    

    2.通过模拟map的hash存储方式:效率优于1

    var data = [1,3,2,1,2];
    Array.prototype.unique = function(){
    	for(var i=0,r={},n=[],len=this.length;i<len;i++){
    		if(!r[this[i]]){
    			r[this[i]] = true;
    			n.push(this[i]);
    		}  
    	}
    	return n;
    };
    console.log(data.unique());
    

    3.通过indexOf判断数组元素第一次出现的位置是否为当前位置来实现:效率是2的两倍,推荐

    var data = [1,3,2,1,2];
    Array.prototype.unique = function(){
    var arr = [this[0]];
         //从第二项开始遍历 for(var i=1,len=this.length;i<len;i++){
    //如果当前数组元素在数组中出现的第一次位置不是i,说明是重复元素 if(this.indexOf(this[i]) == i) arr.push(this[i]); } return arr; }; console.log(data.unique());

    二. ES6环境

    通过Set数据结构中,无重复元素的特性来实现:比较推崇

    var data = [1,3,2,1,2];
    let arr = [...new Set(data)];
    console.log(arr);
    
  • 相关阅读:
    C#学习-字段
    C#学习-静态
    C#学习-类的成员
    C#学习-面向对象语言都有类
    必须知道的 Python 专属骚技巧 25 例
    Python3读取、写入、追加写入Excel文件
    python写入excel数据xlwt模块
    Spring Boot 集成 Swagger 1
    Spring Boot 中的全局异常处理
    Java 8 开发
  • 原文地址:https://www.cnblogs.com/xfz1987/p/7591233.html
Copyright © 2011-2022 走看看