function duplicates(arr) { return arr.filter(function(item,index,array){ return array.indexOf(item) !== array.lastIndexOf(item) && array.indexOf(item) === index; }) }
上面是不用排序的辦法。數組
array.indexOf(item) 獲取到數組匹配到的第一個item的 index。 第一個 index 不等於從後面查找的index,則認爲有重複項
另一個辦法則須要排序:spa
function duplicates(arr) { Array.isArray(arr) && arr.length>0 && arr.sort() return arr.reduce(function(c, v, i){ v===arr[i+1] && v!==c[c.length-1] && c.push(v) return c }, []) }