• 数组去重


    <script>
    /*
    * 数组去重
    * 思路1
    * 去拿当前项 跟后边的每一项去比较 ;如果 后边有某一项 跟当前项相同,那就证明,后边这项是重复的,删除这一项即可
    * */
    var ary = [1,2,3,1,2,6,7,2,3,5];
    // obj ={
    // 1:1,
    // 2:2,
    // 3:3,
    // 6:6,
    // 7:7,
    // };
    // var ary = [1,2,3,2,6,7,2,3,5];
    function removeRep(ary) {
    for(var i = 0; i < ary.length; i++){
    var cur = ary[i];// 当前项
    //用当前项 跟后边的每一项去比较;
    for(var j=i+1;j < ary.length;j++){
    //若后边有一项跟当前项相同,那就证明重复 删掉后边这一项
    if(cur == ary[j]){
    ary.splice(j,1);//删除 索引为 j 的这一项
    j = j - 1;
    // 当 j == 3 时 发现 跟cur 相同
    // j == 3 时, 对应的值是 1, 删除这一项之后
    // j==3 的位置 2
    }
    }
    }
    }
    // 思路 2
    // 造一个新数组, 循环老数组,判断新数组中是否由老数组的当前项;
    //若没有,则给这个新数组添加一项,值为老数组的当前项;

    // var removeRepFn = function(ary){
    // var arr = [];
    // for(var i = 0; i < ary.length; i++){
    // if(arr.indexOf(ary[i]) == -1){
    // arr.push(ary[i])
    // }
    // };
    // // ary = arr;
    // return arr;
    // };

    // var removeRepFn = function(ary){
    // for(var i = 0; i < ary.length; i++){
    // if(ary.indexOf(ary[i],i+1) != -1){
    // var n = ary.indexOf(ary[i],i+1);
    // ary.splice(n,1);
    // i--;
    // }
    // };
    // // ary = arr;
    // return arr;
    // };
    // var temp = removeRepFn(ary);
    console.log(temp, ary);


    //3、 利用对象的属性名不能重复
    // 先造一个空对象,循环数组,把数组的每一项 当作属性名添加到对象里;属性值 也是数组的这一项;
    function removeRep3(ary) {
    var obj = {};
    for(var i = 0; i < ary.length; i++){
    if(typeof obj[ary[i]] != 'undefined'){
    ary[i] = ary[ary.length-1];
    ary.length --;
    i--;
    continue;
    }
    obj[ary[i]] = ary[i];
    }
    return ary;
    }
    function removeRep4(ary) {
    var arr = [],obj = {};
    for(var i = 0; i < ary.length; i++){
    obj[ary[i]] = ary[i];
    }
    console.log(obj);
    for(var k in obj){
    arr.push(obj[k]);
    }
    return arr;
    }
    var temp = removeRep3(ary);
    console.log(temp, ary);


    </script>
  • 相关阅读:
    前端性能优化总结
    Vue style 深度作用选择器 >>> 与 /deep/(sass/less)
    NPM依赖包版本号~和^的区别及最佳实践
    umi部分使用总结
    FIS 插件机制
    从0到1发布一个npm包
    页面性能监控之performance
    1和new Number(1)有什么区别
    实现一个hoverDelay延迟hover
    触发浏览器回流的属性方法一览表
  • 原文地址:https://www.cnblogs.com/zhangyongxi/p/9569297.html
Copyright © 2020-2023  润新知