• 2024前端笔试题记录


    1.rgb转hex

        const rgbToHex = (rgb) => {
            const reg = /[\d,]+/
            const str_arr = reg.exec(rgb)[0].split(',').map(Number)
            const rgbToHex = (...arg) => {
                return '#' + arg.map(v => v.toString(16).length > 1 ? v.toString(16) : `0${v.toString(16)}`).join('')
            }
            let res = rgbToHex(...str_arr)
            return res
        }
        rgbToHex('rgb(255,255,213)');
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    函数柯里化

        // 题目3 函数柯里化
        function currying(fn) {
            let a_arg, b_arg,c_arg
            function a(arg) {
                a_arg = arg||0
                return b
            }
            function b(arg) {
                b_arg = arg||0
                return c
            }
            function c(arg) {
            	c_arg = arg||0
                return fn(a_arg, b_arg, c_arg )
            }
            return a
        }
        console.log(currying((a, b, c) => a + b + c)(1)(2)(3));
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    实现数组拼接和排序

    不能使用concat和sort

     function address(arr1, arr2) {
                const arr = []
                arr1.push(...arr2)
                for (let i = 0; i < arr1.length; i++) {
                    for (let j = 0; j < arr1.length - 1 - i; j++) {
                        let temp = null
                        if (arr1[j] > arr1[j + 1]) {
                            temp = arr1[j + 1]
                            arr1[j + 1] = arr1[j]
                            arr1[j] = temp
                        }
                    }
                }
                return arr1
    
            }
            console.log(address(arr1, arr2))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    完美深拷贝

    function deepClone(target) {
                const map = new WeakMap()
                function _deepClone(target) {
                    if (typeof target !== 'object' || target === null) {
                        return target
                    }
                    let result = Array.isArray(target) ? [] : {}
                    map.set(target, result)
                    function obj_arr(target) {
                        for (let key in target) {
                            if (target.hasOwnProperty(key)) {
                                result[key] = _deepClone(target[key])
                            }
                        }
                    }
                    const typeDeal = {
                        'Object': obj_arr,
                        'RegExp': (reg) => result = new RegExp(reg),
                        'Date': (date) => result = new Date(date),
                        'Array': obj_arr,
                        'function': function () {
                            return target.call(this, arguments)
                        }
                    }
                    const type = Object.prototype.toString.call(target).slice(8, -1)
                    typeDeal[type](target)
                    return result
                }
                return _deepClone(target)
            }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30

    代码输出题

    		//结果是5,iife创建了函数作用域,b修改的是var b = 6 变量提升的b,console.log引用的是外部的b变量,即最初定义的b值为5的变量。因此,输出结果为5。
    		var b = 5;  
    		(()=>{  
       			b=4  
        		var b = 6  
    		})();  
    		console.log(b); // 5
            function test(value){
                switch(value){
                    case 'A':
                        console.log('a');
                        break;
                    case 'B':
                        console.log('b')
                        break;
                    case undefined:  
                        console.log('und')
                        break;
                    default:
                        console.log('default')
                    break;
                }
            }
            test(new String('A')) // default。通过包装类new出来的就是对象类型了。
            
            function a(b){
                console.log(b)
                function b(){
                    console.log(b)
                }
                b()
            }
            a(1) //输出的b全是b函数 同名函数优先级最高!
    
    		 function a(b) {
                console.log(b)//这里输出函数,同名b函数优先级最高
                var b = 2 //这里覆盖了b函数,
                function b() {
                    console.log(b) 
                }
                b() // 执行到这里会报错。 由于上面var b = 2 覆盖了b函数,此时b = 2因此无法作为函数执行
            }
            a(1)
    
    const a = [1,2,3,4].push(5)
    console.log(a) // 5 上面调用push后得到的就是push的返回值,push返回值为添加元素后数组的长度
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
  • 相关阅读:
    STM32驱动MPU6050基于IIC协议
    Spring核心解析—Resource与ResourceLoader接口
    超越GPT-3,DeepMind推出新宠Gato,却被质疑“换汤不换药”?
    暑期第一周总结
    paddlenlp:社交网络中多模态虚假媒体内容核查(特征篇)
    2022-2028年全球与中国便携式茶包市场现状及未来发展趋势分析报告
    无人机--行业生命周期分析
    Ubuntu设置允许root用户登录
    设计模式--观察者模式
    上位机图像处理和嵌入式模块部署(mcu和swd接口)
  • 原文地址:https://blog.csdn.net/m0_47195133/article/details/133738366