11-16 笔试

1.将输入的变量名转换为小驼峰写法

可能的输入命名格式如下:
TestVariable
test_variable
TEST_VARIABLE

最终输出为testVariable

function format(name) {
    
    
  //字符串为空
  if (!name) return name
  //存在"_",把全部的字母改小写 
  if (name.indexOf("_") !== -1) {
    
    
    name = name.toLowerCase()
  } else {
    
    
    // 不存在"_",把首字母改小写
    let strAry = name.split('');
    strAry[0] = strAry[0].toLowerCase();
    name = strAry.join('');
  }
  //把所有的 _[A-Za-z] 替换为 _大写字母
  let newStr = name.replace(/\_([A-Za-z])/g, function (_, str1) {
    
    
    return str1.toUpperCase()
  })
  return newStr
}

扩展正则
正则传参

let str = '+0-1*2/3'
let res = str.replace(/(\+[\d])(\-[\d])(\*[\d])(\/[\d])/g,function(all,str1,str2,str3,str4){
    
    
  console.log(all)//+0-1*2/3  匹配的全部字符串
  console.log(str1)//+0   第一个括号匹配的内容
  console.log(str2)//-1   第二个括号匹配的内容
  console.log(str3)//*2   第三个括号匹配的内容
  console.log(str4)///3   第四个括号匹配的内容
  return "xiaoliu 666"
})
console.log(res)//xiaoliu 666

2.实现一个计算器
"±*/"的运算,其中 除法向下取整,输入一个字符串,算出结果

例如输入 "2+2*2"
	输出	6
function computed(str){
    
    
  // 存在 / 除号,就加上 Math.floor( )字符串
  if(str.indexOf("/") !== -1){
    
    
    str = str.replace(/([\d+])\/([\d])/g,function(all,str1,str2){
    
    
      return 'Math.floor(' + str1 + '/' + str2+ ')'
    })
  }
  return eval(str)
}

3.两个二叉树完成相同

class Tree{
    
    
  constructor(v,children){
    
    
    this.v = v
    this.children = children || null
  }
}
const tree1 = new Tree(10,[new Tree(5),new Tree(3)])
const tree2 = new Tree(9,[new Tree(5),new Tree(3)])

方法一:递归

function isObjectEqual(obj1,obj2){
    
    
  let flag= true
  const Fn = function(obj1,obj2){
    
    
    if(obj1 === null && obj2 !== null || obj2 === null && obj1 !== null){
    
    
      return flag =  false
    }
    if(obj1 === null || obj2 === null)return 
    if(typeof obj1 !== "object" || typeof obj2 !== "object"){
    
    
      flag =  (obj1 === obj2)
    }
    for(let key in obj1){
    
    
      if(typeof obj1[key] !== "object"){
    
    
        if(obj1[key] !== obj2[key]){
    
    
          flag =  false
        } 
      }else{
    
    
        Fn(obj1[key],obj2[key])
      }
    }
  }
  Fn(obj1,obj2)
  return flag
}

方法二:JSON

function isObjectEqual(obj1, obj2) {
    
    
  let str1 = JSON.stringify(obj1)
  let str2 = JSON.stringify(obj2)
  return str1 === str2
}

猜你喜欢

转载自blog.csdn.net/hr_beginner/article/details/121366014
今日推荐