牛客 为 Array 对象添加一个去除重复项的方法

本文详细介绍了JavaScript中如何使用uniq方法去除数组中的重复元素,并解释了indexOf函数的作用原理及如何处理特殊值NaN。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

关键是indexOf的用法:

indexOf是判断resArr数组中的值和当前的值有没有相同的,如果有相等的会返回那个位置,没有相同的返回-1,这里返回-1的意思是没有相同的,也就是resArr数组里还没有当前的数。再之后再遇到有相同的就不会返回-1了,也就不会继续执行if里面的了。
   Array.prototype.uniq = function () {
  1.    var resArr = [];

  2.    var flag = true;

  3.      

  4.    for(var i=0;i<this.length;i++){

  5.        if(resArr.indexOf(this[i]) == -1){

  6.            if(this[i] != this[i]){   //排除 NaN

  7.               if(flag){

  8.                    resArr.push(this[i]);

  9.                    flag = false;

  10.               }

  11.            }else{

  12.                 resArr.push(this[i]);

  13.            }

  14.        }

  15.    }

  16.     return resArr;

  17. }

 

 

NaN 即 Not a Number , 不是一个数字,JS中number数据类型中除了浮点型和整数型还有一个特殊的值 NaN。

NaN, 它是用来表示是否属于number类型的一种状态: 是或否。而不是一个确切的值

当一个表达式返回了NaN 时,表示该表达式中存在不可以转化的变量,并返回了无效的结果,并不是返回了一个确切的值

如果非要说NaN是一个值得话,那么 NaN 就是除过数字的任意值,但绝不是确切的某一个值.

所以 NaN != NaN , 因为它是一个范围,而不能代表一个确定的值

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值