当前位置 : 主页 > 编程语言 > java >

Java数组的去重

来源:互联网 收集:自由互联 发布时间:2021-12-01
目录 数组去重的场景 1、ES6-set 2、利用Map数据结构去重 3、 嵌套循环+splice 4、 forEach + indexOf 总结 数组去重的场景 将数组 var arr =[1,1,‘true',‘true',true,true,66,66,false,false,undefined,undefined,
目录
  • 数组去重的场景
    • 1、ES6-set
    • 2、利用Map数据结构去重
    • 3、 嵌套循环+splice
    • 4、 forEach + indexOf
  • 总结

    数组去重的场景

    将数组var arr =[1,1,‘true',‘true',true,true,66,66,false,false,undefined,undefined, null,null, NaN, NaN, 0, 0, ‘a', ‘a',{},{}]中重复的值过滤掉

    1、ES6-set

    使用ES6中的set是最简单的去重方法

    <script>
       var arr=[1,2,3,4,1,2,3]
       //先将数组转换为set
       var set=new Set(arr) 
       //再将set转换为数组
       console.log(Array.from(set))
    </script>

    2、利用Map数据结构去重

    创建一个空Map数据结构,遍历需要去重的数组,把数组的每一个元素作为key存到Map中。由于Map中不会出现相同的key值,所以最终得到的就是去重后的结果

    function shuzu(arr) {
      let map = new Map();
      let array = new Array();  // 数组用于返回结果
      for (let i = 0; i < arr.length; i++) {
        if(map .has(arr[i])) {  // 如果有该key值
          map .set(arr[i], true);
        } else {
          map .set(arr[i], false);   // 如果没有该key值
          array .push(arr[i]);
        }
      }
      return array ;
    }

    3、 嵌套循环+splice

    function shuzu(arr){
    for(var i = 0 ; i < arr.length; i++){
    for( var j = i + 1; j < arr.length; j++){
    if( arr[i] === arr[j] ){
    arr.splice(j,1);
    }
    }
    }
    return arr;
    }

    4、 forEach + indexOf

    function shuzu(arr){
    var res = [];
    arr.forEach((val,index)=>{
    if( res.indexOf(val) === -1 ){
    res.push(val);
    }
    });
    return res;
    }

    总结

    本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注自由互联的更多内容!

    上一篇:RestTemplate实现发送带headers的GET请求
    下一篇:没有了
    网友评论