1、利用 indeOf 与 lastIndexOf 的返回值不一致,判断重复出现过:
function duplicates(arr) { let newArr = []; arr.forEach((el, index)=>{ if(newArr.indexOf(el) == -1 && arr.indexOf(el) !== arr.lastIndexOf(el)){ newArr.push(el); } }) return newArr; }
2、利用数组排序,然后通过对比当前元素与后一个相同但与前一个不同去找到重复出现的元素:
function duplicates(arr) { let newArr = arr.sort(); return newArr.filter((el, index)=> el == newArr[index+1] && el != newArr[index-1]) }
3、直接使用filter + index + lastIndexOf 去判断重复:
function duplicates(arr) { return arr.filter((el, i)=>arr.lastIndexOf(el) != i && i == arr.indexOf(el)) }
function duplicates(arr) { let obj = {}, newArr= []; arr.forEach(item=>{ if(obj[item]){ obj[item]++ }else{ obj[item] = 1; } }) for(key in obj){ if(obj[key] > 1){ newArr.push(key); } } return newArr; }