复习 - js基础语法

今天继续复习了js基础语法  最后一天了 学完了进入dom bom的复习 今天发现了很多经典案例 我都不知道一个随笔放的完不 逻辑性感觉还是蛮强的 主要就是作用域 对象 内置对象等一些的操作嘛 话不多说直接上代码 都在代码里了哈哈

首先是一个关于预解析的问题 感觉在这里有点小坑 以后要注意了 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 请描述下面代码的输出结果以及运行原因
        var num = 1; 
        function demo(){
            console.log(num); 
            function demoSon(){ 
                console.log(num); 
                num = 3; 
                console.log(num);} 
            var num = 2 
            demoSon();} 
        demo();

        // 很明显这是一个关于预解析的问题 就是会把变量声明和函数声明提升到当前作用域的最前面 那么全局作用域下声明了一个num 函数也声明了 在看函数里面的
        // 注意!!! 这里第一步我就错了 我以为会打印1出来 局部作用域下先是打印num值 这里遵循一个作用域链的原则一级一级往上查找 找最近的一个找到过后
        // 无论是否有值那都是他了 所以这里有个变量提升 提上来后未赋值 所以第一个num打印出来是undefined 后面继续遵循原则 依次打印出 2 3
    </script>
</body>
</html>

然后是一个函数内置对象混用的问题 遇到的第一个有点挑战性的题

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        /*  函数名:getResult​ 函数调用方式:getResult(数值1,数值2,数值3,数值4.....)​ 函数功能:返回值是一个对象,这个对象有sum, max, min, averages等属性,分别表示实参的总和、最大值、最小值、平均数等 */
        function getResult() {
            var sum = 0,
            max = arguments[0],
            min = arguments[0],
            averages = 0
            for (k in arguments) {
                sum += arguments[k]
                if (arguments[k] > max) {
                    max = arguments[k]
                } else if (arguments[k] < min){
                    min = arguments[k]
                }
            }
            averages = sum / arguments.length
            return {
                sum : sum,
                max : max,
                min : min,
                averages : averages
            }
        }
        console.log(getResult(1, 3, 10, 5));
        // 我觉得这个题有点挑战
    </script>
</body>
</html>

然后是一个日常觉得进步了的问题 以前做这个硬是没做出来 可能逻辑盘对了 但代码始终没放对位置 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        /* 以下有两个数组,一个数组arr是班级里所有的学员的名称,一个数组currentArr是提交了每日反馈的学员名单,请创建一种算法,把未提交每日反馈的学员筛选出来 */
        var arr = ["张瑞淑", "徐海涛", "谢岗岗", "薛鹏", "魏明杨", "党婷", "熊飞", "郑翠翠", "李航卫", "屈涛", "汪孝双", "代攀飞", "武志钰", "王亚龙", "周芙榕", "李涛", "郝颖", "文冲洋", "王旭拯", "胡佳豪", "寇晓丽", "马晓晗","王思聪", "张绿", "李德", "郑萍", "张凯", "张嘉成", "葛云侠", "杨磊", "任变", "景德", "高卷林", "刘益凡", "赵娜", "陈章鸣", "张荣召", "赵凯旋", "程倩倩", "脱朝平", "刘吉利", "郭苗苗", "马建峰", "潘瑞", "闫翔", "马晨", "李轩轩", "黄红梅", "刘书彬", "罗强", "刘东","王可可" ,"陈泽文", "李嘉琪", "段佳琦", "黄燕", "邱淑鸿", "宋翔宇", "王波", "樊琳", "王兆国", "许成", "李兴"];
        var currentArr = ["张瑞淑", "徐海涛", "谢岗岗", "薛鹏", "魏明杨", "党婷", "熊飞", "郑翠翠", "李航卫", "屈涛", "汪孝双", "代攀飞", "武志钰", "王亚龙", "周芙榕", "李涛", "郝颖", "文冲洋", "王旭拯", "胡佳豪", "寇晓丽", "马晓晗", "张绿", "李德","郑萍", "张凯", "张嘉成", "葛云侠", "杨磊", "任变", "景德", "高卷林", "刘益凡", "赵娜", "陈章鸣", "张荣召", "赵凯旋", "程倩倩", "脱朝平", "刘吉利", "郭苗苗", "马建峰", "潘瑞", "闫翔", "马晨", "李轩轩", "黄红梅", "刘书彬", "罗强", "刘东", "陈泽文", "李嘉琪", "段佳琦", "黄燕", "邱淑鸿", "宋翔宇", "王波", "樊琳", "王兆国", "许成", "李兴"];
        var newArr = []
        for (var i = 0; i < arr.length; i++) {
            if (flag) {
                newArr[newArr.length] = arr[i - 1]
            }
            var flag =  true
            for (k in currentArr) {
                if (currentArr[k] === arr[i]) {
                    flag = false
                    break
                }
            }
        }
        console.log(newArr);

        // 这个题真的 很能看出些问题 我上一次做这个是想了一两天硬是做不出来 这一次再一做也花了点时间 四十分钟左右 但还好是做出来了 复习一次能看出我太太菜了 也变强了哈哈哈
    </script>
</body>
</html>

来了 这个可能有点长 是一个关于字符串内置对象的一些操作 要动点小脑筋

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        /* 字符串:“abaasdffggghhjjkkgfddsssss3444343”,问题如下:

1、 字符串的长度 2、 取出指定位置的字符,如:0,3,5,9等 3、 查找指定字符是否在以上字符串中存在,如:i,c ,b等 4、 替换指定的字符,如:g替换为22,ss替换为b等操作方法 5、 截取指定开始位置到结束位置的字符串,如:取得1-5的字符串 6、 找出以上字符串中出现次数最多的字符和出现的次数 7、 遍历字符串,并将遍历出的字符两头添加符号“@” */
        var str = 'abaasdffggghhjjkkgfddsssss3444343'
        // 1.
        console.log(str.length);
        // 2.
        console.log(str.charAt(0));
        console.log(str[3]);
        console.log(str.charCodeAt(5));
        // 3.
        function getExist(x, str) {
            var flag = false 
            for (var i = 0; i < str.length; i++) {
                if (str.charAt(i) == x) {
                    flag = true
                    break
                }
            }
            return flag
        }
        console.log(getExist('b', str));
        // 4.
        str = str.replace('g', '22')
        str = str.replace('ss', 'b')
        console.log(str);

        // 5.
        console.log(str.substr(0, 5));
        console.log(str.slice(0, 5));

        // 6.
        var max = 0
        var counts = 0
        var temp
        var newArr = str.split('')
        for (var i = 0; i < newArr.length; i++) {
            counts = 0
            for (var j = 1; j < newArr.length; j++) {
                if (newArr[i] == newArr[j]) {
                    counts++
                    newArr.splice(j,1)
                }
            }
            if (counts > max) {
                max = counts
                temp = newArr[i]
            }
        }
        console.log(temp, max);
        // 这个题 十分的有挑战性 我感觉虽然做出来了 但代码有点冗余 但又找不到删减点
        // 7.
        var newStr = ''
        for (var i = 0; i < str.length; i++) {
            newStr += str.substr(i, 1)
            newStr += '@'
        }
        newStr = '@' + newStr
        console.log(newStr);
    </script>
</body>
</html>

最后来一个经典题目随机数的一个应用 还有好多我没放上来 大多数是选了一些比较卡我的 我的代码肯定是有冗余的  但是我目前还是想不出更简单的方式 看有没与高人能帮我指出下

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        /* 从以下学员名单中随机选出4个学员:

​ var arr = ["鹿晗","王俊凯","蔡徐坤","彭于晏","周杰伦","刘德华","赵本山"];

​ 注意:不要有重复的学员 */
        var arr = ["鹿晗","王俊凯","蔡徐坤","彭于晏","周杰伦","刘德华","赵本山"]
        function getIntRandom(max, min) {
            min = Math.ceil(min)
            max = Math.floor(max)
            return Math.floor(Math.random() * (max - min + 1)) + min
        }
        var newArr = new Array()
        var x = 6
        for (var i = 0; i < 4; i++) {
            var temp = getIntRandom(0, x)
            newArr[newArr.length] = arr[temp]
            arr.splice(temp, 1)
            x--
        }
        console.log(newArr);
        // 这个题也是当初卡了我很久 现在一做就很快做出来了 复习还是有用的 尽快复习完 马上进入新阶段了
    </script>
</body>
</html>

 

posted @ 2022-03-21 08:54  Heymar-10  阅读(130)  评论(0编辑  收藏  举报