//方法一:利用索引判斷是否重復(使用了兩次) 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; }