12.30---03课堂案例

57 阅读1分钟
  1. 数组去重

     var arr = [1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5]
     处理完毕后的 arr === [1, 2, 3, 4, 5]
    

     // 1. 遍历数组, 拿到数组的每一项
    for (var i = 0; i < arr.length; i++) {
        // 2. 判断数组内, 除了当前项之外, 后续有没有与当前项相同的值
        if (arr.indexOf(arr[i], i + 1) !== -1) {    // 如果当前分支条件成立, 那么代表数组后续一定有与当前重复的值
            arr.splice(i, 1)    // 分支成立时, 将当前项删掉, 达到去重的目的
            i--     // 直接使用 splice 会出现 数组塌陷的情况, 会导致去重无法清除干净, 加上 i--, 解决数组塌陷
        }
    }

    console.log('去重后的数组: ', arr)

2. 封装一个函数, 函数返回一个 0~10 之间的

    function fn() {
        // 求 0~10之间的 随机整数
        var fnNum1 = Math.random()  // 得到了一个随机数, 但是区间为 0~1

        var fnNum2 = fnNum1 * (10 + 1)   // 得到了一个随机数, 区间为 0~10之间的

        var fnNum3 = Math.floor(fnNum2) // 通过四舍五入, 将这个随机数改变为  随机整数
        /**
         *  当前 四舍五入的形式有问题, 我们现在要么改为向上取整, 要么改为向下取整
         * 
         *      如果说 使用向上取整, 数字应该计算为:        -0.999~9.999        向上取整后为 0~10
         * 
         *      如果说 使用向下取整, 数字应该计算为:        0~10.999            向下取整后为 0~10
         * 
         *      通过分析认为 向下取整比较好计算, 所以我们的 取整方式更改为 向下取整
         *      计算公式        Math.floor(随机数 * (10 + 1))
         * 
         *      目前的 随机数取证方式为 向下取整
         *          0~0.999         0
         *          1~1.999         1
         *          2~2.999         2
         *          ...
         *          9~9.999         9
         *          10~10.999       10
        */

        return fnNum3
    }

概率

    /**
         *  目前 随机数取整的方式为 四舍五入
         * 
         *          0~0.499     ->      0
     *          0.5~1.499   ->      1
     *          1.5~2.499   ->      2
     *          ...
     *          8.5~9.499   ->      9
     *          9.5~9.999   ->      10
    */
    var num = fn()
    console.log('num 是一个随机数: ', num)


    var obj = {}
    for (var i = 0; i <= 100000; i++) {
        var sum = fn()  // 1. 循环开始 先拿到随机数的值

        if (obj[sum] === undefined) {
            obj[sum] = 1    // 代表 当前这个随机数 第一次出现
        } else {
            obj[sum]++      // 如果执行的是 else 分支, 表明 sum 不是第一次出现, 具体出现的次数我们不知道, 所以直接让他的属性值自增1 就行
        }
    }
    console.log(obj)