Array.from(new Set(this))

Array.prototype.unique = function() {
  return Array.from(new Set(this))
}

if (!result.includes(item)) result.push(item)

Array.prototype.unique = function() {
  var result = []
  this.forEach(v => {
    if(!result.includes(v)) result.push(v)
  })
  return result
}

需要注意,includes 会判断 NaN === NaN,所以结果里最多出现一个 NaN

filter() 判断 v !== context[i+1]

Array.prototype.unique = function() {
  var sortArr = this.sort()
  return sortArr.filter((v,i,context) => v !== context[i+1])
}

这个和 splice,reduce 的方式类似,都是先 sort,再用!==比较当前元素和下一个元素
这里由于是使用=== 来比较,所以会出现多个 NaN

Array.prototype.unique = function() {
  var sortArr = this.sort(), i = 0
  for(; i < sortArr.length; i++){
    if(sortArr[i] === sortArr[i+1]){
      sortArr.splice(i,1)
      i--
    }
  }
  return sortArr;
}
Array.prototype.unique = function() {
  var sortArr = this.sort(), result = []
  sortArr.reduce((v1,v2) => {
    if(v1 !== v2) result.push(v1)
    return v2;
  })
  result.push(sortArr[sortArr.length - 1])
  return result
}

results matching ""

    No results matching ""