zoukankan      html  css  js  c++  java
  • 数组去重的方法们

    今天就来总结下,处理数组去重的时候想到的一些方法,后面要是还能想到啥或者看到啥新的,会再次添加:

    1.indexOf的方法

    var arr=[1,1,7,2,7,4,8,4]
    var newArr=[];
    for(var i=0;i<arr.length;i++){
    if(newArr.indexOf(arr[i])==-1){
    newArr.push(arr[i]);
    }
    }
    console.log(newArr)

    这种方法就是利用indexOf查找新数组中是否有相应的arr[i],若没有的话就会返回-1,则在newArr中push.arr[i]

    2.依旧利用indexOf判断其与数组下标的关系,来选择是否向新数组中push:

    var arr=[1,1,7,2,7,4,8,4]
    var newArr=[];
    for(var i=0;i<arr.length;i++){
    if(arr.indexOf(arr[i])==i){
    newArr.push(arr[i]);
    }
    }
    console.log(newArr)

    3.使用sort方法来处理:

    var arr=[1,1,7,2,7,4,8,4]
    arr.sort()
    var newarr=[arr[0]];
    for(var i=0;i<arr.length;i++){
    if(arr[i]!=newarr[newarr.length-1]){
    newarr.push(arr[i]);
    }
    }
    console.log(newarr)

    4.双层循环+splice:

    var arr=[1,1,7,2,7,4,8,4]
    function theme(arr){for(var i=0,len=arr.length;i<len;i++){
    for(var j=i+1,length=arr.length;j<length;j++){
    if(arr[i]==arr[j]){
    arr.splice(j,1)
    j--;//删除一个数,j就减1
    length--;//j值减小时,lenth的值也减1
    }
    }
    }
    return arr}
    console.log(theme(arr))

    5.set方式:

    var arr=[1,1,7,2,7];
    function theme(arr){
    var x=new Set(arr);
    return[...x];
    };
    console.log(theme(arr))

    set真的是yyds..简单几句解决..ES6提供了一种新的数据结构Set,它类似于数组,但是成员的值都是唯一的,没有重复的值,且set本身就是一个构造函数,用来生成Set数据结构.

    6.filter方式:

    var arr=[1,1,7,2,7];
    var newarr=arr.filter(function(element,index,self){
    return self.indexOf(element) === index;
    });
    console.log(newarr);

    解释下,这三个参数,第一个是表示arr中的某元素,第二个参数表示元素在数组中的位置,第三个表示数组本身.

    7.includes方法:

    var arr=[1,1,7,2,7];
    function theme(arr){
    var newarr=[];
    for(var i=0;i<arr.length;i++){
    if(!newarr.includes(arr[i])){
    newarr.push(arr[i])
    }
    }
    return newarr
    }
    console.log(theme(arr))

    includes()方法的作用是,来判断一个数组是否包含一个特定的值.如果是的话,返回true,否则false

  • 相关阅读:
    POJ 2502 Subway(最短路径)
    HDU 1430 魔板
    HDU 1043 POJ 1077 八数码问题
    POJ 2576 Tug of War 随机算法(非正规解法)
    什么是COM
    6.0的版本的 tc,不支持大漠对象做数组吗?
    Q键连发。按住Q键则连发。松开则停止1。
    Q键连发。按住Q键 则连发。松开则停止2。
    特殊符号。
    僵尸_另类的生命体。
  • 原文地址:https://www.cnblogs.com/ljylearnsmore/p/14532855.html
Copyright © 2011-2022 走看看