美文网首页
数组去重

数组去重

作者: 嘤嘤嘤998 | 来源:发表于2019-02-10 12:55 被阅读0次

    数组去重

    1. ES6 SET
    ES6 提供了新的数据结构 Set。它类似于数组,但不是数组。其成员的值都是唯一的,没有重复的值。
    Array.from()方法就是将一个类数组对象或者可遍历对象转换成一个真正的数组

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

    2. 遍历数组(利用indexOf没匹配返回-1)
    思路:新建一数组,遍历传入数组,若元素不在新数组中就添加到新数组中。
    注意:判断值是否在数组的方法“indexOf”是ECMAScript5方法,IE8以下不支持,需多写兼容低版本浏览器代码。
    indexOf() : 返回第一个匹配的下标,如果没有匹配返回-1

    indexOf兼容代码(JS实现):

    if(!Array.prototype.indexOf){  //判断浏览器是否支持indexOf方法
        Array.prototype.indexOf = function(item){
            var result = -1,
            arr_item = null;
            if(this.length == 0) {
                return result;
            }
            for(var i=0,len=this.length; i<len; i++){
                arr_item = this[i];
                if(arr_item === item){
                    result = i;
                    break; 
                }
            }
            return result;
        };
    }
    

    数组去重代码:

    function unique1(arr){
        var newArr = [];//新建一个数组
        for(var i=0,len=arr.length;i<len;i++){
            if(newArr.indexOf(arr[i]) == -1){//若新数组中未包含该项则将其存入新数组
             newArr.push(arr[i]);
            }
        }
        return newArr;
    }
    

    3. 数组下标去重法(利用indexOf只匹配第一项)
    思路:如果当前数组的第i项在当前数组中第一次出现的位置不是i,那么表示第i项是重复的,忽略掉。否则存入结果数组。
    注意:此方法也用到了“indexOf”方法。

    function unique2(arr){
        var newArr = [];
        for(var i=0, len=arr.length; i<len; i++){
             if(arr.indexOf(arr[i]) == i){
                 newArr.push(arr[i]);
             }
         }
         return newArr;
    }
    

    数组排序sort()

    arrayObject.sort(sortby)
    在原数组上进行排序,不生成副本。
    注意:如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。

    var values = [0, 1, 2, 5, 10, 15];
    values.sort();
    alert(values);  //0,1,10,15,5
    
    function sortNumber(a,b){
      return a - b
    }
    var values = [0, 1, 2, 5, 10, 15];
    values.sort(sortNumber);
    alert(values);  //0,1,5,10,15
    

    数组倒序reverse()

    var fruits = ["Banana", "Orange", "Apple", "Mango"];
    fruits.reverse();
    fruits 结果输出:
    Mango,Apple,Orange,Banana
    

    相关文章

      网友评论

          本文标题:数组去重

          本文链接:https://www.haomeiwen.com/subject/vswteqtx.html