文章目录

    这里记录的是在练习百度的2016IFE任务时的笔记,因为是边学边记所以也比较零散,仅供自己平日记录。

  1. js 数组去重
  • 方法一:双重循环去重 — 耗时 性能差

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Array.prototype.unique = function(){
    var newArray = [this[0]];
    for(var i=1;i<this.length;i++){
    var flag= false;
    for(var j=0;j<newArray.length;j++){
    if(this[i] == newArray[j]){
    flag = true;
    break;
    }
    }
    if(!flag){
    newArray.push(this[i]);
    }
    }
    return newArray;
    }
  • 方法二: 用 forEach()及 indexOf()实现

    1
    2
    3
    4
    5
    6
    7
    8
    9
    Array.prototype.unique = function(){
    var newArray=[];
    this.forEach(function(index){
    if(newArray.indexOf(index) == -1){
    newArray.push(index)
    }
    })
    return newArray;
    }

比方法一快

  • 方法三: 排序遍历去重
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Array.prototype.unique = function(){
    this.sort();
    var newArray =[];
    for(var i=0;i<this.length;i++){
    if(this[i]!==newArray[newArray.length-1]){//只和新数组的最后一个元素比较
    newArray.push(this[i]);
    }
    }
    return newArray;
    }

去重后的数组,与数字相同的数字字符无法区分,比如’1’和1

  • 方法四: 对象键值对法

    1
    2
    3
    4
    5
    6
    7
    Array.prototype.unique = function(){
    var obj={};
    for(var i=0;i<this.length;i++){
    obj[this[i]] = this[i];
    }
    return Object.keys(obj);
    }
  • 方法五:ES6

    1
    2
    3
    4
    5
    6
    7
    8
    function unique (arr) {
    const seen = new Map()
    return arr.filter((a) => !seen.has(a) && seen.set(a, 1))
    }
    function unique (arr) {
    return Array.from(new Set(arr))
    }
  1. 元素的所有类名: ele.classList
    是否含有某个类名: ele.contains(className);
文章目录