方法1:
function duplicates(arr) { //key-value,数组元素作为key,数组索引作为value,统计出现次数,再筛选次数大于1的的数组输出 var obj = {} arr.forEach(function(item,index){ if(!obj[item]){ obj[item]=1 }else{ obj[item]++ } }) //遍历对象,筛选出大于1的键值,然后将键值输出到数组中 var newArr = [] for(var key in obj){ if(obj.hasOwnProperty(key)&&obj[key]>1){ newArr.push(key) } } return newArr }方法2
function duplicates(arr) { //对数组进行排序,统计每个元素的最大索引值和最小索引值,如果两者不相等,则说明重复,输出此元素 var newArr = [] arr.sort(function(a,b){return a-b}) //遍历数组,将元素获取到的最后索引作为新的循环初始值 for(var i = 0; i<arr.length; i=arr.lastIndexOf(arr[i])+1){ index = arr.indexOf(arr[i]) lastIndex = arr.lastIndexOf(arr[i]) if(index!=lastIndex){ newArr.push(arr[i]) } } return newArr }