方式一

Array.from(new Set(arr)

  1. var arr = [3, 77, 7,1, 2, 2, 3, 8, 0];
  2. console.log(Array.from(new Set(arr)))

方式二

判断是原始值 对象 null

对于null类型的数据,直接通过===判断
对于原始子我们使用typeof判断function 原始类型 object
对于object我们需要tostring方法进行判断
例如

  1. function type(target) {
  2. var template={
  3. "[object Array]":"array",
  4. "[object Object]":"object",
  5. "[object String]":"string -object",
  6. "[object Boolean]":"boolean -object",
  7. "[object Number]":"number -object",
  8. }
  9. if (target === null) {
  10. return "null"
  11. }
  12. if(typeof(target) ==="object"){
  13. var str = Object.prototype.toString.call(target)
  14. return template[str]
  15. }else{
  16. return typeof(target)
  17. }
  18. }
  19. type(null)

数组去重

原理:对象的属性不允许重复,我们可以把数组遍历作为对象的属性,然后给属性赋值,然后判断对象是不是undefine
对象[数组值]是否为undefine

  1. var arr =[1,1,1,2,3,3,4,5,5]
  2. Array.prototype.unique=function(){
  3. var temp={},
  4. arr=[],
  5. len = this.length;
  6. for(var i=0;i<len;i++){
  7. if(!temp[this[i]]){
  8. temp[this[i]]="abc"
  9. arr.push(this[i])
  10. }
  11. }
  12. return arr
  13. }