美文网首页面试题
js数组去重和查找重复元素

js数组去重和查找重复元素

作者: ticktackkk | 来源:发表于2020-01-13 00:19 被阅读0次

    一、
    利用对象的特性,在一个对象里面同一个属性名不可能出现两次,

    Array.prototype.uniqe = function(){
            var temp = {},
                arr = [],
                len = this.length
            for(var i = 0;i < len; i++){
                if(!temp[this[i]]){
    //temp[this[i]] == undefind == false  ==>!false == true 
    //如果这个对象里面没有这个元素的话
                    temp[this[i]] = 'a';
    //就把这个元素填进去,并给个随意属性值a
                    arr.push(this[i]);
    //新数组后面push这个属性名的属性
                }
            }
            return arr;
        }
    
    function uniqe(arr){
            var temp = {};
            var newarr = []; 
            for(var i = 0;i < arr.length; i++){
                if(!temp[arr[i]]){
                    temp[arr[i]] = 'a';
                    newarr.push(arr[i]);
                }
            }
            return newarr;
        }
    

    找出重复的元素

    function duplicates(arr) {
            var narr = [];
            for (var i = 0; i < arr.length; i++) {
                //判断是否是第一次出现,且不是最后一次出现
                if (arr.indexOf(arr[i]) == i && arr.lastIndexOf(arr[i]) != i) {
                    narr.push(arr[i]);
                }
            }
            return narr;
        }
    
    function duplicates(arr) {
       var narr = [];
        // 实际工作中很少会用到for,而且for的语义不够明确
        arr.forEach((value, index) => {
            if (arr.indexOf(value) === index && arr.lastIndexOf(value !== index)) {
                narr.push(value);
            }
        });
        return narr;
    

    相关文章

      网友评论

        本文标题:js数组去重和查找重复元素

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