• 数组去重方法总结


    1.利用数组的indexof;

    复制代码
    var arr = ['abc','abc','ss','2','d','ss','2','ss','f','22','d'];
    //定义一个新的数组
    var s = [];
    //遍历数组
    for(var i = 0;i<arr.length;i++){
        if(s.indexOf(arr[i]) == -1){  //判断在s数组中是否存在,不存在则push到s数组中
            s.push(arr[i]);
        }
    }
    console.log(s);
    //输出结果:["abc", "ss", "2", "d", "f", "22"]
    复制代码

    关于indexOf()方法:

    indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。

    stringObject.indexOf(searchvalue,fromindex)

    该方法将从头到尾地检索字符串 stringObject,看它是否含有子串 searchvalue。开始检索的位置在字符串的 fromindex 处或字符串的开头(没有指定 fromindex 时)。如果找到一个 searchvalue,则返回 searchvalue 的第一次出现的位置。stringObject 中的字符位置是从 0 开始的。

    如果在数组中没找到字符串则返回 -1。

    2.如果你了解es6,推荐你使用下面的方式

    function dedupe(array) {
      return Array.from(new Set(array));
    }
    
    dedupe([1, 1, 2, 3]) // [1, 2, 3]

    其中Set是一种数据结构,它类似于数组,但是成员的值都是唯一的,没有重复的值。它本身就是一个构造函数,新建一个新的Set结构需要new关键字,接受参数为一个数组(或者具有 iterable 接口的其他数据结构);

    Set 结构的实例有以下属性。

    • Set.prototype.constructor:构造函数,默认就是Set函数。
    • Set.prototype.size:返回Set实例的成员总数。

    Set 实例的方法分为两大类:操作方法(用于操作数据)和遍历方法(用于遍历成员)。

    • add(value):添加某个值,返回 Set 结构本身。
    • delete(value):删除某个值,返回一个布尔值,表示删除是否成功。
    • has(value):返回一个布尔值,表示该值是否为Set的成员。
    • clear():清除所有成员,没有返回值。

    其中,Array.from(Set)会将Set数据结构转换为数组;

    3.过滤数组中对象某一属性相同的方法

    前两种只能过滤到数组中时基本类型的重复数据;

    复制代码
     delRepeat(array) {
                var hash = {};
                array = array.reduce(function(item, next) {
                    hash[next.id] ? '' : hash[next.id] = true && item.push(next);
                    return item
                }, []);
            }
    复制代码

    以上方法可以过滤掉数组中的对象某一属性相同的值,返回一个新数组;

    看的故事多了,才慢慢知道,话说多了就是打自己的脸!
  • 相关阅读:
    List<T> 添加 DataTable
    sql 在not in 子查询有null值情况下经常出现的陷阱
    SQL查询~ 存在一个表而不在另一个表中的数据
    SQL Server xtype
    jQurey 获取当前时间
    sp_rename
    Longest Substring Without Repeating Characters
    Fraction to Recurring Decimal
    链表翻转系列
    蓄水池抽样
  • 原文地址:https://www.cnblogs.com/alex-415/p/7840216.html
Copyright © 2020-2023  润新知