JavaScript数组去重和随机样本

JavaScript数组去重和随机样本

前言

本篇写的是两个经典问题的算法:数组去重随机样本

一、数组去重

题目:去掉数组中的重复项
思路:

  1. 准备一个空结果数组
  2. 遍历原数组
  3. 如果遍历到的项不在结果数组中,则推入结果数组

代码如下(示例):

<script>
    var arr = [1, 1, 1, 2, 2, 3, 3, 3, 1];
    //结果数组
    var result = [];
    //遍历原数组
    for (var i = 0; i < arr.length; i++) {
      //判断遍历到的这个项是否存在在结果数组中,如果不在就推入
      //includes()方法用来判断某项是否在数组中
      if (!result.includes(arr[i])) {
        result.push(arr[i]);
      }
    }
    console.log(result);
  </script>

二、随机样本

题目:请随机从原数组中取3项
思路:

  1. 准备一个空结果数组
  2. 遍历原数组
  3. 随机选择一项,推入结果数组
  4. 将原数组这项删除

代码如下(示例):

 <script>
    var arr = [1, 2, 4, 5, 6, 3, 7];
    // 结果数组
    var result = [];
    // 遍历数组
    for (var i = 0; i < 3; i++) {
      //随机选择一项的下标[0,arr.length-1],数组的下标0~arr.length-1
      //[a,b]区间的随机数是parseInt(Math.random() * (b+1-a) + a)
      var n = parseInt(Math.random() * arr.length);
      //把这项推入到结果数组
      result.push(arr[n]);
      //删除这项,防止重复 被随机生成
      arr.splice(n, 1);
    }
    console.log(result);
  </script>

总结

看到题目不要着急敲代码,先理清解题思路,根据思路步骤写代码,逐步推敲。
深刻理解算法,多推敲算法,不能硬记算法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值