//方法一:利用索引判断是否重复(使用了两次) function duplicates(arr) { var arr1 = []; arr.forEach(function (ele) { //判断原数组是否有重复数据 //判断结果数组是否已经具有该数据 if (arr.indexOf(ele) != arr.lastIndexOf(ele) && arr1.indexOf(ele) == -1){ arr1.push(ele); } }); return arr1; }
//方法二:先判断数组中元素出现的次数,如果大于1并且结果数组之前无此元素,则将这个元素放到结果数组中 function dup(arr) { var b = []; var result = []; for (var i= 0; i<arr.length; i++){ b[i] = arr.reduce(function (init,curr) { //如果当前置等于item,该函数值加一 return curr === arr[i] ? init+1:init; },0) if (b[i] > 1 && result.indexOf(arr[i]) === -1){ result.push(arr[i]); } } return result; }
//方法三:先进行排序,然后判断排序之后的前一个数据是否等于后一个数据,如果是且结果数组没有这个元素,则将该元素加入结果数组 function duplicates1(arr) { var a = arr.sort(); var result = []; for (var i = 0;i<arr.length; i++){ if (arr[i]===arr[i+1] && result.indexOf(arr[i]) == -1){ result.push(arr[i]); } } return result; }