输出数组重复项

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,则认为有重复项

另外一个办法则需要排序:

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
  }, [])
}

 

posted @ 2018-06-21 13:51  kiera  阅读(460)  评论(0编辑  收藏  举报