zoukankan      html  css  js  c++  java
  • 17-数组中去除基本数据类型和NaN的重复项(并保证原有数组顺序)

    思想:

    1.只有NaN不等于自身,通过这个特性去区分处理

    2.通过一个变量开关,去控制添加次数(在循环中通过if条件)

    3.找到第一次第一次就命中条件的,通过开关的作用把第一次的命中的元素push到数组中,后面的NaN重复的自然也就添加不进去

    3.其他元素添加与否的条件通过判断数组中是否已经存在,通过indexOf,如果为-1就是不存在则添加。

    var arr = [false,true,undefined,null,null,NaN,0,1,{},{},'a','a',NaN];
    // 期望输出结果:
    // [false,true,undefined,null,NaN,0,1,{},{},'a'];
    
    function fn(arr){
      let flag = true;  //控制相同元素添加次数的开关
      let newArr = [];
      arr.forEach((item,index)=>{
        // item != item 是为了筛出来NaN,因为不等于自身的只有NaN
        // NaN === NaN 是false,其他的都为true
        if(item!=item){
          if(flag){
            newArr.push(item)   //通过开关,把最先出现的那个NaN添加进了数组中,保证了新数组的顺序
            flag=false;  //添加一次成功后,开关关闭
          }
        }else{
          // 新数组中不存在的才会push到新数组中
          if(newArr.indexOf(item)===-1){
            newArr.push(item)
          }
        }
      })
      return newArr;
    
    }
    var res = fn(arr);
    console.log(res);
  • 相关阅读:
    csp-s模拟 77/78 (达哥专场)
    csp-s 模拟76
    csp-s模拟75 导弹袭击
    反思集
    模拟69/70 考试反思
    抱大腿
    csp-s模拟61 甜圈
    实时记录
    好题思路集汇
    半集训反思 8.28 「路,还是要自己走的」
  • 原文地址:https://www.cnblogs.com/haoqiyouyu/p/14922924.html
Copyright © 2011-2022 走看看