js=c的经典案列

<!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>经典案列</title>
</head>

<body>
    <script>

       //1、随机数 = > 随机生成10000个1-10个随机数 统计每个出现的次数

        function getRandom(x, y) {

            var n = Math.max(x, y)

            var m = Math.min(x, y)

            var obj = {}

            for (var i = 0; i < 10000; i++) {

                var num = Math.floor(Math.random() * (n - m) + m)//获取n~m之间的随机数

                // console.log(num)

                if (obj[num]) { //obj[num]已经存在,则该数次数+1

                    obj[num]++

                } else {//obj[num]不存在,则该存入该数

                    obj[num] = 1

                }

            }

            for (var key in obj) {

                console.log(key, obj[key])

            }

        }

        getRandom(1, 10)   //函数调用

        /* 2、工具函数  随机生成一个姓名 = 》抽奖

        var students = ['陈汗', '陈红', '郭杰河', '辛茹', '张但', '哈哈', '天佑',

        '先春', '禧辰', '维康', '天天', '鑫', '倩', '町', '欣',

        '巧', '媛', '庆', '建', '蝶', '鸣', '辰', '海', '旭', '豪',

        '文', '臣', '婷', '川', '淋', '琼', '涛',

        '生', '荣', '琪', '茂', '靖', '毅', '希', '松', '渔',

        '小雷', '小芳', '小霞',

        ]

        对象:键值对

        根据索引值找对应的名字 索引值为键:名字为值

        */

        function tool() {   

                    var students = ['陈汗', '陈红', '郭杰河', '辛茹', '张但', '哈哈', '天佑',

                            '先春', '禧辰', '维康', '天天', '鑫', '倩', '町', '欣',

                          '巧', '媛', '庆', '建', '蝶', '鸣', '辰', '海', '旭', '豪',

                          '文', '臣', '婷', '川', '淋', '琼', '涛',

                          '生', '荣', '琪', '茂', '靖', '毅', '希', '松', '渔',

                        '小雷', '小芳', '小霞',

                       ]

            //定义一个新的空对象

            var obj = {}

            for (var i = 0; i < students.length; i++) {

                //循环遍历得到数组里的一个随机索引值

                var item = Math.floor(Math.random() * students.length)

                //通过索引值得到数组里的元素

                var i = students[item]

                console.log(i)

            }

        }

        tool()    //函数调用

        //3、打印倒计时间

        function setTime() {

            var count = 3     // 可自己设置值

            var set = setInterval(function () {

                console.log(count--)

                if (count == 0) {

                    clearInterval(set)

                }

            }, 1000)

        }

        setTime()

        /* 4、

        4.1. 编写函数has(arr , 60) 判断数组中是否存在60这个元素,返回布尔类型

        4.2. aabccd统计每个字符出现的次数,去掉重复的字符,使结果显示 abcd

        4.3. 有一个从小到大排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。

        */

        function has() {

            //定义一个数组

            var arr = [22, 33, 44, 55, 66, 77]

            //循环遍历数组内的元素

            var isOk = arr.every(function (item) {

                return item == 60

            })

            console.log(isOk)

            var str = 'aabccd'

            //定义一个空的新对象 键存元素 值存重复次数

            var obj = {}

            //循环遍历将字符串里面的元素存入空对象中 {元素:次数}

            for (var i = 0; i < str.length; i++) {

                //定义一个变量 存 获取字符串里的元素

                var item = str[i]

                // 存入空对象 obj[item] 判断

                if (obj[item]) {

                    //空对象中已存在则该元素次数+1

                    obj[item]++

                } else {

                    //空对象中没有就存入该元素 =1

                    obj[item] = 1

                }

            }

            //通过for-in循环遍历,打印字符串中的元素 通过字符串常用方法str.concat把字符串拼接在一起(不存在重复的元素)

            //定义一个空字符串 存每一个循环的到的元素

            var str = ''

            for (var key in obj) {

                //把每一次循环得到的字符串拼接在一起  =》下面三种表达式皆可,可自行选择

                // str = str + key

                //`${str}${key}`

                str = str.concat(key)

            }

            console.log(str)

            var arr1 = [11, 22, 33, 44, 55]

            arr1.push(Number(prompt()))

            var arr1 = arr1.sort(function (a, b) {

                return a - b

            })

            console.log(arr1)

        }

        has()



        //5、 冒泡排序 从小到大 indexOf 去重

        function bubble() {

            var arr = [89, 54, 9, 89, 8, 21, 21, 23, 67, 98, 21, 15, 9]

            //先通过冒泡排序从小到大

            //外层循环控制循环的次数

            for (var i = 0; i < arr.length - 1; i++) {

                //内层循环--第一个数和后面所有的数进行比较 找出最大值

                for (var j = 0; j < arr.length - i - 1; j++) {

                    //判断内层循环前后两者之间的大小

                    if (arr[j] > arr[j + 1]) {

                        var temp = arr[j]

                        arr[j] = arr[j + 1]

                        arr[j + 1] = temp

                    }



                }

            }

            console.log(arr)

            //创建一个空对象 存数组

            var obj = {}

            //循环遍历

            for (var i = 0; i < arr.length; i++) {

                // 获取arr中的元素

                var item = arr[i]

                //判断重复次数

                if (obj[item]) {

                    obj[item]++

                } else {

                    obj[item] = 1

                }

            }

            //方法一 :indexOf 判断是否=-1 =-1 说明新数组中没有,则存入,否则不存

            //声明一个空数组 去掉重复的元素

            var arr2 = []

            for (var i = 0; i < arr.length; i++) {

                var item = arr[i]

                if (arr2.indexOf(item) == -1) {

                    arr2.push(item)

                }

            }

            console.log(arr2)

            //方法二:splice  双重for循环

            for (var i = 0; i < arr.length; i++) {

                for (var j = i + 1; j < arr.length - 1; j++) {

                    if (arr[i] == arr[j]) {

                        arr.splice(i, 1)

                        j--

                    }

                }

            }

            console.log(arr)




        }

        bubble()

        //6、选择排序 找最小值索引号 小--大 indexOf 去重

        function chose() {

            var arr = [89, 54, 9, 89, 8, 21, 21, 23, 67, 98, 21, 15, 9]

            for (var i = 0; i < arr.length - 1; i++) {

                // 1.假设声明一个最小值的索引值

                var minIndex = i

                // 2、内层循环与假设的最小索引值比较

                for (var j = i + 1; j < arr.length; j++) {

                    if (arr[minIndex] > arr[j]) {

                        minIndex = j

                    }

                }

                // 3、通过索引值得到元素,元素进行比较

                var temp = arr[i]

                arr[i] = arr[minIndex]

                arr[minIndex] = temp



            }

        }

        chose()

        //7、 aabccd统计每个字符出现的次数,去掉重复的字符,使结果显示 abcd

        function str() {

            var str = 'aabccd'

            var obj = {}

            for (var i = 0; i < str.length; i++) {

                var item = str[i]

                if (obj[item]) {

                    obj[item]++

                } else {

                    obj[item] = 1

                }

            }

            var str1 = ''

            for (var key in obj) {

                str1 += key

            }

            console.log(str1)

        }

        str()

        /*8、模板字符串练习``

        function stu() {

        var students = [{

        number: 1001,

        name: 'jack',

        score: 98,

        gender: '男'

        },

        {

        number: 1002,

        name: 'rose',

        score: 95,

        gender: '女'

        },

        {

        number: 1003,

        name: '小丽',

        score: 85,

        gender: '女'

        }

        ]

        */

        function stringTemplate() {

            var students = [{

                    number: 1001,

                    name: 'jack',

                    score: 98,

                    gender: '男'

                },

                {

                    number: 1002,

                    name: 'rose',

                    score: 95,

                    gender: '女'

                },

                {

                    number: 1003,

                    name: '小丽',

                    score: 85,

                    gender: '女'

                }

            ]

           //通过map映射得到每一个数组对象

            var newStudents = students.map(function (item, index) {

                return item = `

                            <tr>

                               <td>${item.number}</td>

                               <td>${item.name}</td>

                               <td>${item.score}</td>

                               <td>${item.gender}</td>

                            </tr>

                            `

            })

           //通过模板字符串拼接

            var stu = `<table>

                <tr>

                    <th>学号</th>

                    <th>姓名</th>

                    <th>成绩</th>

                    <th>性别</th>

                </tr>

                ${newStudents.join('') }

            </table>`

            document.write(stu)



        }

        stringTemplate()

        /* 9、打印成绩

        1. 创建一个学生成绩数组,存储所有学生的数学成绩,分别是 89,78,90,99,67,59

        2. 求所有学生中分数最高的学生成绩,打印输出到界面

        假设一个最大值

        3. 求所有学生中分数最低学生成绩,打印输出到界面

        假设一个最小值

        4. 求不及格的学生有几个,打印输出到界面

        */

        function score() {

            var arr = [89, 78, 90, 35, 99, 67, 59]

            //假设第一个是最大/小值

            var maxScore = arr[0]

            var minScore = arr[0]

            for (var i = 0; i < arr.length; i++) {

                if (maxScore < arr[i]) {

                    maxScore = arr[i]

                }

                if (minScore > arr[i]) {

                    minScore = arr[i]

                }

            }

            console.log('最高分', maxScore)

            console.log('最低分', minScore)

            var unscore = arr.filter(function (item) {

                return item < 60

            })

            console.log('不及格', unscore)

        }

        score()

        /* 10、字符串=>数组=>对象

        已知字符串 'http://www.qianfeng.com?username=admin&password=123'

        var url = 'http://www.qianfeng.com?username=admin&password=123'

        2. 获取用户名密码存储到对象中,形式如下(扩展))

        {

            username:'admin',

            password:123

        }

        */

        function strObj() {

            var url = 'http://www.qianfeng.com?username=admin&password=123'

            // 先分割成['username=admin','password=123']

           // 方法一

            // var url = url.split('?').splice(1).join('').split('&')

           // 方法二

            var index = url.indexOf('?')

            var url = url.substring(index + 1)

            var url = url.split('&')

            var obj = {}

            for (var i = 0; i < url.length; i++) {

                var item = url[i].split('=')

                var name = item[0]

                var value = item[1]

                //键值对

                obj[name] = value

            }

            console.log(obj)

        }

        strObj()

        /* 11、生成随机颜色

        封装函数, 根据参数区别返回是十六进制颜色还是RGB颜色值

          function getRandomColor(type){

              if(type == 'RGB'){

                  return rgb颜色

              }else{

                  return 十六进制颜色

              }

          }*/

        //生成随机颜色函数

        function randow(x, y) {

            var n = Math.max(x, y)

            var m = Math.min(x, y)

            return Math.floor(Math.random() * (n - m) + m)

        }



        function getRandow(type) {

           // RGB格式

            var r = randow(0, 256)

            var g = randow(0, 256)

            var b = randow(0, 256)

           // 十六进制

            var r1 = randow(0, 256).toString(16)

            var g1 = randow(0, 256).toString(16)

            var b1 = randow(0, 256).toString(16)

            // 判断类型

            if (type == 'GRB') {

                return `rgb${r}${g}${b}`

            } else {

                return `#${r1}${g1}${b1}`

            }

        }

        getRandow()

        //12、99乘法表

        function multip(){

            for (var i = 1; i < 10; i++) {

                for (var j = 1; j <= i; j++) {

                    // 模板字符串拼接  语法:`${变量}`

                    var m = `${i}x${j}=${i*j}`

                    document.write(` ${m}`)

                }

                document.write('<br>')

            }

            // console.log(m)

        }

        multip()

        //13、打印1-20的数,不包含5 每5个一行 (使用document.write()打印)

        function num() {

            var count = 0

            for (var i = 1; i <= 20; i++) {

                document.write(' ', i)

                count++

                // 当计数器等于5时,换行打印,且计数器重置为0

                if (count == 5) {

                    document.write('<br>')

                    count = 0

                }

            }

        }

        num()

        /*14、

        已知字符串: 'kavcefMMfuklqeMMzvcreMMuoadfe', 要求用**替换大写MM输出,如:'kavcef**fuklqe**zvcre**uoadfe'

        敏感词过虑

        */

        function replaceStr() {

            var str = 'kavcefMMfuklqeMMzvcreMMuoadfe'

            //方法一

            var str = str.split('MM').join('**')

            console.log(str)

            // 方法二

            while (str.indexOf('MM') != -1) {

                str = str.replace('MM', '**')

            }

            console.log(str)

        }

        replaceStr()

        //15、入职薪水10k,每年涨幅5%,50年后工资多少?求该员工50年共拿工资多少(累加和)

        function salary() {

            var salary = 10000 * 12      //第一年的薪资

            var sum = salary

            for (var i = 2; i <= 50; i++) {

                // 涨幅工资

                var salary = salary * 1.05

                sum += salary

            }

            console.log(salary)

            console.log(sum)

        }

        salary()

        //16、求100-200以内的质数 只能被1和自身整除的数 flag =true关键

        function prime() {

            for (var i = 100; i <= 200; i++) {

                var flag = true

                for (var j = 2; j < i; j++) {

                    if (i % j == 0) {

                        flag = false

                    }

                }

                if (flag == true) {

                    console.log(i)

                }

            }

        }

        prime()
 </script>
</body>

</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值