常用的js相关的面试小测试关于循环嵌套、数组api和字符串api的应用

可能不是最简便的方法,有问题的话欢迎指导


前言

这是问题列表,后边附步骤

1. 从元年到2021年 所有的闰年,  (被4整除&&不能被100整除 ) || 能被400整除

2.猴子吃桃 每天吃1/2的桃 吃完之后扔一个 第七天 剩一个 桃子的总数

3.一对幼兔 一个月成小兔 再过一个月成兔 并生下一对幼兔  1年后 多少对 (不会死)

4.100-999所有的水仙花数    个位十位百位 立方和 == 数字本身

5. 共有10元  铅笔 1.5   笔记本 2   橡皮 0.3   雪糕  2  四种都得有 剩下的钱不够买两块雪糕   多少种方案?

6.得到10-20的六个不重复的随机整数

7. var str = "border-left-color-margin-left-top";   //borderLeftColor 驼峰转换

8.打乱数组   [1,2,3,4,5]   //[5,3,1,4,2] [2,5,3,1,4]

9.数组展平  [1,2,3,[4,5,[6,7,8,[9,10]]]] => [1,2,3,4,5,6,7,8,9,10]

10.验证一个字符串是否是回文字符串  1234321

11.查找任意字符串中出现次数最多的字符   "abababaaa"

12. 一个含有字符串的数组,例如:["a","b","a","c","b","d","a",1,1],需要得到一个新数组  ["a1","b1","a2","c","b2","d","a3","11","12"]
     要求: 未重复的元素不处理  重复的元素加上编号  不能影响正常数组的顺序

13. 去除数组中重复的元素  ["a","a",1,1] => ["a",1]  (2种方式实现)

14. 用循环的方式 完成数组排序 [1,3,2,4,5] => [1,2,3,4,5]

15.求出任意非负整数区间中1出现的次数。如:算出100~1300的整数中1出现的次数?


        // 1从元年到2021年 所有的闰年,  (被4整除&&不能被100整除 ) || 能被400整除
        for (let index = 1; index < 2022; index++) {
            if ((index % 4 == 0 && index % 100 != 0) || index % 400 == 0) {
                console.log("num1", index);
            }
        }
        // 2.猴子吃桃 每天吃1/2的桃 吃完之后扔一个 第七天 剩一个
        // 总共多少个桃子 初始值=1
        var sum2 = 1
        for (let index = 0; index < 7; index++) {
            sum2 = (sum2 + 1) * 2
        }
        console.log("num2", sum2);

        // 3.一对幼兔 一个月成小兔 再过一个月成兔 并生下一对幼兔  1年后 多少对 (不会死)
        //  幼      小       成
        var a3 = 1, b3 = 0, c3 = 0, sum3 = 1
        for (let index = 1; index < 13; index++) {
            b3 = a3
            c3 = c3 + b3
            a3 = c3
        }
        sum3 = a3 + b3 + c3;
        console.log("num3", "12个月后,一共有兔子" + sum3 + "对,其中幼兔" + a3 + "对,小兔" + b3 + "对,成兔" + c3 + "对");


        // 4.100-999所有的水仙花数    个位十位百位 立方和 == 数字本身
        for (let index = 100; index < 1000; index++) {
            var ge = index % 10
            var shi = parseInt(index % 100 / 10)
            var bei = parseInt(index / 100)
            if (Math.pow(bei, 3) + Math.pow(shi, 3) + Math.pow(ge, 3) == index) {
                console.log("num4", index);

            }
        }
        // 5. 共有10元  铅笔 1.5   笔记本 2   橡皮 0.3   雪糕  2  四种都得有 剩下的钱不够买两块雪糕  多少种方案?

        for (let x = 0; x < 11 / 1.5; x++) {
            for (let y = 0; y < 11 / 2; y++) {
                for (let z = 0; z < 11 / 0.3; z++) {
                    for (let i = 0; i < 11 / 2; i++) {
                        if ((x != 0 && y != 0 && z != 0 && i != 0) && 1.5 * x + 2 * y + 0.3 * z + 2 * i <= 10 && 1.5 * x + 2 * y + 0.3 * z + 2 * i >= 6) {
                            console.log("num5", ` 铅笔 ${x} 笔记本  ${y}  橡皮 ${z}  雪糕  ${i} `);

                        }

                    }

                }

            }

        }
        // 6.得到10-20的六个不重复的随机整数

        var arr = []
        for (let index = 0; index < 6; index++) {
            getnum(arr)
        }
        console.log("num6", arr);

        function getnum(array) {
            for (let i = 0; i > -1; i++) {
                var random = Math.round(Math.random() * 10 + 10)
                var bool = true
                for (let j = 0; j < array.length; j++) {
                    if (random == array[j]) {
                        bool = false
                        break
                    }
                }
                if (bool) {
                    array.push(random)
                    return
                }
            }
        }
        // 7. var str = "border-left-color-margin-left-top";   //borderLeftColor 驼峰转换
        var str = "border-left-color-margin-left-top";
        var newstr = str.split("-")
        let result = newstr.map((item, index) => {
            return index == 0 ? item : item[0].toUpperCase() + item.slice(1)
        })
        console.log("num7", result.join(""));

        // 8.打乱数组   [1,2,3,4,5]   //[5,3,1,4,2] [2,5,3,1,4]
        var arr8 = [1, 2, 3, 4, 5]
        arr8.sort(function () {
            return (0.5 - Math.random())
        })
        console.log("num8", arr8);

        // 9.数组展平[1, 2, 3, [4, 5, [6, 7, 8, [9, 10]]]] => [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
        var arr9 = [1, 2, 3, [4, 5, [6, 7, 8, [9, 10]]]]
        var newarr9 = arr9.toString().split(",").map(Number)
        console.log("num9", newarr9);

        // 10.验证一个字符串是否是回文字符串  1234321
        var str10 = "1234321"
        var arr10 = Array.from(str10).reverse().join("")
        if (arr10 == str10) {
            console.log("num10", "是回文字符串");

        } else {
            console.log("num10", "不是回文字符串");

        }
        // 11.查找任意字符串中出现次数最多的字符   "skdvmmdoskjm"
        var str11 = "skdvmmdoskjm"
        var obj11 = {}
        var num11 = 0
        var index11 = 0
        for (let index = 0; index < str11.length; index++) {
            // 判断对象中是否存在[str11[index]] 
            if (obj11[str11[index]]) {
                obj11[str11[index]]++
            } else {
                obj11[str11[index]] = 1
            }
        }
        for (const key in obj11) {

            if (num11 < obj11[key]) {
                num11 = obj11[key]
                index11 = key
            }
        }
        console.log("num111", "最多的字" + index11);


        // 12. 一个含有字符串的数组,例如:["a","b","a","c","b","d","a",1,1],需要得到一个新数组  ["a1","b1","a2","c","b2","d","a3","11","12"]
        // 要求: 未重复的元素不处理  重复的元素加上编号  不能影响正常数组的顺序
        var arr12 = ["a", "b", "a", "c", "b", "d", "a", 1, 1]
        var obj12 = {}
        var num12 = 0
        var index12 = 0
        for (let index = 0; index < arr12.length; index++) {
            if (obj12[arr12[index]]) {
                obj12[arr12[index]]++
            } else {
                obj12[arr12[index]] = 1
            }
            for (const key in obj12) {
                if (num11 < obj12[key]) {
                    num12 = obj12[key]
                    index12 = key
                }
            }
        }
        for (const key in obj12) {
            if (obj12[key] > 1) {
                var count = 0
                arr12.forEach((item, index) => {
                    if (item == key) {
                        count++
                        arr12[index] = arr12[index] + count.toString()
                    }
                })
            }
        }
        console.log("num112", arr12);




        // 13. 去除数组中重复的元素  ["a","a",1,1] => ["a",1]  (2种方式实现)
        var arr13 = ["a", "a", 1, 1]
        var newarr13 = Array.from(new Set(arr13))
        console.log("num13", newarr13);

        for (let index = 0; index < arr13.length; index++) {
            for (let i = index + 1; i < arr13.length; i++) {
                if (arr13[index] == arr13[i]) {
                    arr13.splice(i, 1)
                    i--
                }
            }

        }
        console.log("num13", arr13);

        // 14. 用循环的方式 完成数组排序 [1,3,2,4,5] => [1,2,3,4,5]
        var arr14 = [1, 3, 2, 4, 5]
        arr14.sort(function (a, b) {
            return a - b
        })
        console.log("num14", arr14);

        // 15.求出任意非负整数区间中1出现的次数。如:算出100~1300的整数中1出现的次数?
        var obj15 = 0
        for (let index = 100; index < 1301; index++) {
            for (let i = 0; i < index.toString().length; i++) {
                if (index.toString()[i] == 1) {
                    obj15++
                }
            }
        }
        console.log("num15", obj15);

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值