zoukankan      html  css  js  c++  java
  • 数组去重你知道几种?

    数组去重的方法

    • 第一种方法

    Array.from方法可以将Set结构转为数组

    1
    2
    let items = new Set([1, 2, 3, 4, 5]);
    let array = Array.from(items);

    这就是提供了一种数据去重的方法

    1
    2
    3
    4
    function uniq(array) {
    return Array.from(new Set(array));
    }
    uniq([1, 2, 3, 3]) //[1, 2, 3]
    • 第二种方法

    运用扩展运算符(…)提供了一种更便捷的去重方法

    1
    2
    3
    let arr = [2, 3, 3, 5, 6, 2];
    let uniq = [...new Set(arr)];
    //[2, 3, 5, 6]
    • 第三种方法

    这是一种原生JS的去重方法,借助一个空数组来实现去重,便于理解底层原理(xyz函数带有参数)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    function xyz(arr) {
    let a= [];
    arr.forEach((item,index) => {
    a.indexOf(item) ===-1 ? a.push(item) : ''
    })
    return a;
    }
    console.log(xyz([1,2,3,2,3]));
    //[1, 2, 3]
    • 第四种方法

    同上(xyz函数不带参数)
    拓展:需要注意的一点就是此函数可以传多个数组,但是要看arguments[index]
    决定执行哪个数组,默认是执行第一个。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function xyz() {
    let a= [];
    // Array.from(arguments[0]).forEach((item,index) => {
    // a.indexOf(item) ===-1 ? a.push(item) : ''
    // })
    // Array.prototype 可以换成[]
    Array.prototype.forEach.call(arguments[1], (item,index) => {
    a.indexOf(item) ===-1 ? a.push(item) : ''
    })
    return a;
    }
    console.log(xyz([1,2,3,2,3],[2,2,1]));
    //[1, 2, 3]
    • 第五种方法

    这是一种基于数组原型链的去重方法

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Array.prototype.uniq = function() {
    let a= [];
    this.forEach((item,index) => {
    a.indexOf(item) ===-1 ? a.push(item) : ''
    })
    return a;
    }
     
    console.log([1,2,1,3].uniq());
    //[1, 2, 3]

    这么多方法你知道哪几种呢?

  • 相关阅读:
    三种等待时间的区别
    多种测试的测试方法
    测试面试题总结
    自动化过程中定位不到元素时使用等待方法
    账号登录测试,多表查询
    TP商城添加购物车自动化测试
    二十四个球
    老鼠喝药
    购物车测试点
    前后端分页
  • 原文地址:https://www.cnblogs.com/libin-1/p/6843210.html
Copyright © 2011-2022 走看看