每日一练||第二周汇总

题目来源

牛客网-前端技能挑战

获取字符串的长度

题目描述

如果第二个参数 bUnicode255For1 === true,则所有字符长度为 1
否则如果字符 Unicode 编码 > 255 则长度为 2

输入

'hello world, 牛客', false

输出

17

参考代码

function strLength(s, bUnicode255For1) {
  let len =0
  if(bUnicode255For1 === true) {
    return s.length
  } else {
    for (let i=0; i < s.length; i++) {
      if(s.charCodeAt(i)>255) {
        len += 2
      } else {
        len += 1
      }
    }
    return len
  }
}

颜色字符串转换

题目描述

将 rgb 颜色字符串转换为十六进制的形式,如 rgb(255, 255, 255) 转为 #ffffff

  1. rgb 中每个 , 后面的空格数量不固定
  2. 十六进制表达式使用六位小写字母
  3. 如果输入不符合 rgb 格式,返回原始输入

输入

'rgb(255, 255, 255)'

输出

#ffffff

参考代码

function rgb2hex(sRGB) {
  let reg = /rgb|\(|\)|\s/g
  let colorArr = sRGB.replace(reg,'').split(',')
  let isColor = colorArr.every(item => (item <= 255 && /\d/.test(item)))
  if(isColor) {
    let result = '#'
    colorArr.forEach(element => {
      hex = parseInt(element)<16?'0'+parseInt(element).toString(16):parseInt(element).toString(16)
      //console.log(parseInt(element).toString(16))
      result += hex
    });
    return result
  } else {
    return sRGB
  }
}

将字符串转换为驼峰格式

题目描述

css 中经常有类似 background-image 这种通过 - 连接的字符,通过 javascript 设置样式的时候需要将这种样式转换成 backgroundImage 驼峰格式,请完成此转换功能

  1. 以 - 为分隔符,将第二个起的非空单词首字母转为大写
  2. -webkit-border-image 转换后的结果为 webkitBorderImage

输入

'font-size'

输出

fontSize

参考代码

function cssStyle2DomStyle(sName) {
  if(sName[0]=='-'){
    sName.replace('-','')
  }
  let reg =/-./g
  return sName.replace(reg,function (a,b){
    return a[1].toUpperCase()
  })
}
function cssStyle2DomStyle(sName) {
    var arr = sName.split(''); 
    //判断第一个是不是 '-',是的话就删除
    if(arr.indexOf('-') == 0)
        arr.splice(0,1);
   //处理剩余的'-'
    for(var i=0; i<arr.length; i++){
        if(arr[i] == '-'){
            arr.splice(i,1);
            arr[i] = arr[i].toUpperCase();
        }
    }
    return arr.join('');
}

字符串统计

题目描述

统计字符串中每个字符的出现频率,返回一个 Object,key 为统计字符,value 为出现频率

  1. 不限制 key 的顺序
  2. 输入的字符串参数不会为空
  3. 忽略空白字符

输入

'hello world'

输出

{h: 1, e: 1, l: 3, o: 2, w: 1, r: 1, d: 1}

参考代码

function count(str) {
  let map = new Map()
  let res = new Object()
  str = str.replace(/\s/,'')
  for(let i = 0; i < str.length; i++) {
    if(map.has(str[i])) {
      map.set(str[i],map.get(str[i])+1)
    } else {
      map.set(str[i],1)
    }
  }
  map.forEach((value,key) => {
    res[key] = value
  })
  return res
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值