VueBloghyhero6

几道前端的面试题,小公司的

2020-08-12 / 2020-08-12 / 348次浏览

分割符 --------------------------------------------------------

可以先思考思考,在写。

        //1.关于数组切割返回
        let a = ['a','b','c','d']
        // 数组截取
        function cutArray(arr, num) {
            let start = 0
            let over = start + num
            let result = []
            let arrLength = arr.length

            if(over >= arrLength){
                result.push(arr)
                return result
            }
            while (over < arr.length) {  // 如果结束位数小于数组长度可以进行截取
                result.push(arr.slice(start, over))
                start = start + num
                over = over + num
                if (over >= arrLength) {
                    over = arrLength
                    result.push(arr.slice(start, over))
                    break
                }
            }
            return result
        }

都是自己的写的,写的不好仅供参考

关于第一个题还有另外一种解法

let chunk = (a,size) => {
    let newArr = [];
    for (let i = 0; i < Math.ceil(a.length/size); i++){
      let start = i * size;
      let end = start + size;
      newArr.push(a.slice(start, end));
    }
    return newArr;
  }

分割符---------------------------------------------------------

     // 2.关于版本号切割
        let version = 'V0.11.12'
        const versionFn = {
            // 大版本号
            major: function () {
                let str = version.split('.')
                let changeStr = Number(str[0].substring(1)) + 1
                str[0] = 'V' + changeStr
                str = str.join('.')
                return str
            },
            // 中版本号
            minor: function () {
                let str = version.split('.')
                let changeStr = Number(str[1]) + 1
                str[1] = changeStr
                str = str.join('.')
                console.log(str)
                return str
            },
            // 小版本号
            patch: function () {
                let str = version.split('.')
                let changeStr = Number(str[2]) + 1
                str[2] = changeStr
                str = str.join('.')
                console.log(str)
                return str
            }
        }
        // 关于判断给定字符串位置
        let object = {'a': [{'b': {'c': 3}}]};
        const getterFn = {
            get: function (object, str) {
                let resultArr = getterFn.filterStr(str)
                let strArr = str.split('.')
                let strArrLength = strArr.length
                let currentObject = object // 给定当前的默认对象
                let judgeObject = '' // 定义一个判断对象
                let signFalse = 1 // 给定当前一个标记
                for (let key in resultArr) {
                    if(typeof(resultArr[key]) === 'string') { // 判断类型是否是 自己定义的字符串
                        try{
                            currentObject[key[resultArr[key]]][0]  // 报错兼容判断
                        }catch (err){
                            console.log(err)
                            signFalse = 0
                            break
                        }
                        judgeObject = currentObject[key[resultArr[key]]][resultArr[key]]
                    } else {
                        judgeObject = currentObject[key]
                    }
                    if(judgeObject){
                        currentObject = judgeObject // 通过的话重新赋值
                    } else {
                        console.log('is error about', key)
                        signFalse = 0
                        break;
                    }
                }
                if (signFalse) {
                    console.log('null',currentObject)
                }
            },
            // 过滤函数
            filterStr (str) {
                let result = [] // 返回数组是处理 a[0].b[1] 这种东西的
                let strArr = str.split('.')
                let strArrLength = strArr.length
                for (let i = 0; i < strArrLength; i++) {
                    if (strArr[i].indexOf('[') != -1) {
                        let strArr0 = strArr[i].split('[')[0] // 获取当前第一位 key
                        let strArr1 = strArr[i].split('[')[1]
                        let strArr2 = strArr1.split(']')[0] // 获取要截取的值  value
                        result[strArr0] = strArr2
                    } else {
                        result[strArr[i]] = 0
                    }
                }
                return result
            }
        }

关于 第四题 promise.then 可以很好的时候实现截停机制。
链式调用可以 链式调用函数,但是俩者结合我并没有找到一个太好的思路。

发散题就算了,各抒己见,一个人一个观点了。