function duplicates(arr) {    var newarr = [];    for(var j = 0;j < arr.length;j++){        for(var i = j+1;i < arr.length;i++){            if(arr[j] == arr[i]){                newarr.push(arr[i]);                            }        }    }     //return [...new Set(newarr)];    return Array.from(new Set(newarr));}

输入:
[1, 2, 4, 4, 3, 3, 1, 5, 3]
输出
[1, 3, 4]

方法二:

function duplicates(arr) {    //得到重复出现过的元素组成的数组       var newarr = [];    for(var j = 0;j < arr.length;j++){        if(arr.indexOf(arr[j]) != j){            newarr.push(arr[j]);        }    }     //数组去重    var temp = []; //一个新的临时数组    for(var i = 0; i < newarr.length; i++){        if(temp.indexOf(newarr[i]) == -1){            temp.push(newarr[i]);        }    }    return temp;}

方法三

https://www.nowcoder.com/questionTerminal/871a468deecf453589ea261835d6b78b如果元素过大的话,方法三不好,因为会遍历很多次。而且如果原数组中的每一项不全是数值,得到关联数组,那么对数组b的遍历要做修改function duplicates(arr) {     //声明两个数组,a数组用来存放结果,b数组用来存放arr中每个元素的个数     var a = [],b = [];     //遍历arr,如果以arr中元素为下标的的b元素已存在,则该b元素加1,否则设置为1     for(var i = 0; i < arr.length; i++){         if(!b[arr[i]]){             b[arr[i]] = 1;             continue;         }         b[arr[i]]++;     }     //遍历b数组,将其中元素值大于1的元素下标存入a数组中     for(var i = 0; i < b.length; i++){         if(b[i] > 1){             a.push(i);         }     }     return a; }

方法四:

方法三改进后function duplicates(arr) { var obj = {};    var repeatList = [];    //遍历数组,将数组的值作为obj的索引,出现次数为值    arr.forEach(function(item){        if(obj[item]){            obj[item] +=1;        }else{            obj[item] = 1;        }    });    //获取对象自身属性    var propertyNames = Object.getOwnPropertyNames(obj);    //遍历对象,将重复出现的元素取出    propertyNames.forEach(function(item){        if(obj[item] > 1){            repeatList.push(parseInt(item));        }    });    return repeatList;  }

方法五:

function duplicates(arr) { var result = [];    arr.forEach(function(elem){       if(arr.indexOf(elem) !=arr.lastIndexOf(elem) && result.indexOf(elem) == -1){           result.push(elem);       }    });    return result;}

方法六

function duplicates(arr) {    var a=arr.sort(),b=[];    for(var i in a){        if(a[i]==a[i-1] && b.indexOf(a[i])==-1) b.push(a[i]);     }    return b;}//先排序,如果后一个与前一个相等且未保存,则保存。