zoukankan      html  css  js  c++  java
  • 数组去重等数组实例

    一、删除指定的数组元素

    要求:将数组 [2,0,45,3,9,0,47,0] 中的 0去掉,然后形成一个不包含 0的新数组;

    实现思路:

    1、需要一个新数组用于存放筛选之后的数据。

    2、遍历原来的数组,把不是 0的数据添加到新数组里面(此时要注意采用 数组名+索引名 的格式接收数据)

    3、新数组里面的个数,使用length 不断累加;

    var arr= [2,0,45,3,9,0,47,0];
    var newArr = [];
    for(var i=0,j=0;i<arr.length;i++){
        if(arr[i]!=0){
        //新数组应该从 0开始,依次递增
        newArr[newArr.length] =arr[i];
        }
    }
    console.log(newArr);

    二、数组去重

    要求:删除数组 [1,2,3,4,2,1,4,5,6] 中的重复的元素。

    实现思路:

    1、首先获取数组中的每一个元素

    2、从当前元素的下一个元素进行比较

    3、运用条件判断判断两个循环获取的元素是否相等;

    4、如果相等则证明出现了重复的元素,就删除aa对应的元素。

    5、当删除了aa所对应的元素,后面的元素会自动补上一位,此时就不会比较当前的元素,因此需要再比较一次aa所在位置的元素。

    为了达到这个效果就需要对 aa自减(aa--),需要写在内部的for循环里面,删除了一个元素之后才aa--;

    var arr=[1,2,3,4,2,1,4,5,6];
    for(var i=0;i<arr.length;i++){
        for(var aa=i+1;aa<arr.length;aa++){
            if(arr[i] == arr[aa]){
                arr.splice(aa,1);
                aa--
            }
        }
    }console.log(arr);

     三、数组中新增元素

    要求:新建一个数组,里面存放10个整数(1—10);

    实现思路:

    1、使用循环来追加数组;

    2、声明一个空数组 arr;

    3、循环中的计数器 i 可以作为数组元素存入。

    4、由于数组的索引号是从 0开始的,因此计数器从 0开始更加合适,存入的数组元素要 +1;

    注意:

    可以通过修改数组索引的方式追加数组

    不能直接给数组名进行赋值,否则会覆盖掉以前的数据;

    新增数组元素,可以通过修改索引号,追加数组元素;

    var arr=[];
    for(var i = 0;i<10;i++){
        arr[i] = i+1;
    }
    console.log(arr);

    四、筛选数组

    要求:将数组 [2,0,6,1,56,0,94,2]中大于 10的元素筛选出来,放到新的数组中。

    实现思路:

    1、声明一个新的数组用于存放新的数组 newArr。

    2、遍历原来的旧数组,找出大于等于 10的元素;

    3、依次追加给数组 newArr;

    讨论多种方法实现效果,核心思路就是(新数组应该从0开始,依次递增)

    方法一:

    var arr= [2,0,6,12,1,56,0,94,2];
    var newArr = [];
    for(var i=0,j=0;i<arr.length;i++){
        if(arr[i]>10){
        //新数组应该从 0开始,依次递增
        newArr[j] =arr[i];
        j++;
        }
    }

     方法二:

    也可以将 j++ 直接写在索引 ( [ ] )里面。

    var arr= [2,0,6,12,1,56,0,94,2];
    var newArr = [];
    for(var i=0,j=0;i<arr.length;i++){
        if(arr[i]>10){
        //新数组应该从 0开始,依次递增
        newArr[j++] =arr[i];
        }
    }
    console.log(newArr);

    方法三:

    使用 length属性获得 newArr 数组的长度;

    刚开始的时候 newArr数组是空的,所以newArr.length刚开始的结果就是 0;

    length自动检测数组的实现。

    var arr= [2,0,6,12,1,56,0,94,2];
    var newArr = [];
    for(var i=0;i<arr.length;i++){
        if(arr[i]>10){
        //新数组应该从 0开始,依次递增
        newArr[newArr.length] =arr[i];
        }
    }
    console.log(newArr);

    五、翻转数组

    要求:将数组 ['一','二','三','四','五'] 的内容反过来存放,输出: ['五','四','三','二','一']

    实现思路:

    1、声明一个新数组 newArr;

    2、将旧的数组索引号第 4个取过来(arr.length - 1),给新数组索引号第 0个元素(new.length)

    3、采取递减的方式 i--;

    把 arr 原数组的最后一个元素取出来给 新数组作为第一个

    • 将第 4 个给新数组第 0 个;
    • 将第 3 个给新数组第 1 个;
    • 将第 2 个给新数组第 2 个;
    • 将第 1 个给新数组第 3 个;
    • 将第 0 个给新数组第 4 个;

    旧的数组是一个递减的过程 43210(5-1);新的数组 是一个递增的过程

    var arr =['一','二','三','四','五'];
    var newArr=[];
    for(var i=arr.length-1;i>=0;i--){
        newArr[newArr.length]=arr[i]
    }
    console.log(newArr);

    六、数组最大值

    求取数组中的最大值

    实现步骤:

    声明一个保存最大元素的变量 max;

    默认最大值也可以取数组中的第一个元素。

    遍历这个数组,并把里面的每个数组元素和 max相比较。

    如果这个数组元素大于 max的值,那么就将这个数组元素存到 max里面,否则继续进行下一轮比较;

    最后输出最大值 max;

    (如何去理解呢,可以理解为擂台赛,一个人在擂台守擂(守擂的人就相当是最大值),其他人与他较量,如果赢了,就代替原来的人守擂,就是最厉害的(最大值))

    var arr=[2,5,9,34,1,89,50];
    var max=arr[0];
    for(var i=1;i<arr.length;i++){
        if(arr[i] > max){
            max=arr[i];
        }
    }console.log(max);

     

    七、数组最小值

    求取数组中的最小值,和求取数组中的最大值思路一致。只需要换个符号就可以了。

    复制代码
    var arr=[2,5,9,34,1,89,50];
    var min=arr[0];
    for(var i=1;i<arr.length;i++){
        if(arr[i]<min){
            min=arr[i];
        }
    }console.log(min);
    复制代码

     或者是使用三元运算符,返回结果也是一样的。

    var arr=[2,5,9,34,1,89,50];
    var min=arr[0];
    for(var i=1;i<arr.length;i++){
        min = arr[i] < min?arr[i]:min;
    }console.log(min);
  • 相关阅读:
    11. 优秀的基数统计算法--HyperLogLog
    10. Redis实现限流功能
    9. Redis中游标迭代器(scan)
    8. 使用Redis查询附近的人或商家
    7. Redis的管道技术
    6. Redis在内存用完时会怎么办?以及Redis如何处理已过期的数据?
    5. 详解Redis中的事务
    4. Redis的配置文件以及持久化
    2020.7.15 遇到一个bug
    A Review of Visual Tracking with Deep Learning
  • 原文地址:https://www.cnblogs.com/nyw1983/p/11956228.html
Copyright © 2011-2022 走看看