面试题

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

2020-01-13  本文已影响0人  ticktackkk

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

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;
上一篇 下一篇

猜你喜欢

热点阅读