JS经典面试题

目录

1.字符串变驼峰

2.日期转换

3.短路表达式

4.随机数练习

5.人民币

6.求阶乘

7.防抖和节流


1.字符串变驼峰

字符串“get-element-by-id”,转换成“getElementById”

步骤分析:

  1. 先使用split分割成多个字符串数组
  2. 数组从索引号为1的位置开始循环、
  3. 循环的每个元素首字母使用toUpperCase()转换成首字母大写
  4. 使用join()把数组转换成字符串
function combo(msg) {
    var arr = msg.split("-"); //[get,element,by,id]
    for (var i = 1; i < arr.length; i++) {
    arr[i] = arr[i][0].toUpperCase() + arr[i].substring(1); //Element
    }
    msg = arr.join(""); //msg=” getElementById”
    return msg;
}
var str = "get-element-by-id";
var res = combo(str);
console.log(res);

2.日期转换

输出今天的日期,以YYYY-MM-DD的方式

步骤分析:

  1.  new Date()获取当天的日期
  2. getFullYear()获取年
  3. getMonth() 获取月但是要+1并且使用三元表达式将月份转换成两位数,如果没有大于10就在前面拼接一个0,大于就直接输出
  4. getDate()获取日
  5. 最后使用字符串拼接
var d = new Date();
// 获取年,getFullYear()返回4位的数字
var year = d.getFullYear();
// 获取月,月份比较特殊,0是1月,11是12月
var month = d.getMonth() + 1;
// 变成两位
month = month < 10 ? "0" + month : month;
// 获取日
var day = d.getDate();
day = day < 10 ? "0" + day : day;
alert(year + "-" + month + "-" + day);

3.短路表达式

foo = foo||bar

相当于:

var foo;
if(foo){
    foo=foo;
}else{
    foo=bar;
}

4.随机数练习

用js随机数选取10-100之间的10个数字,存入一个数组并排序。

var arr = [];
function getRandom(istart, iend) {
  var iChoice = iend - istart + 1;
  return Math.floor(Math.random() * iChoice) + istart;
}
for (var i = 0; i < 10; i++) {
  var num = getRandom(10, 100);
  arr.push(num);
}
arr.sort();
console.log(arr.sort());

5.人民币

将数字12345678转换成RMB形式,如:”12,345,678“

var str = 12345678 + "";
// 封装一个反转字符串的方法
function res(str) {
  // split(转换为数组)  reverse(反转数组) join(转化为字符串)
  return (str = str
    .split("")
    .reverse()
    .join(""));
}
// 调用反转数组的方法
str = res(str);
//每三位字符加一个 ','的方法
function toRMB(str) {
  var rmb = "";
  for (var i = 1; i <= str.length; i++) {
    rmb += str[i - 1]; // 添加字符串的每一项
    if (i % 3 == 0 && i != str.length) {
      rmb += ",";
    }
  }
  return rmb;
}
// 调用函数
str = res(toRMB(str));
console.log(str); // 12,345,678

6.求阶乘

阶乘指从1乘以2乘以3乘以4一直乘到所要求的数。

Number.prototype.N = function() {
    var re = 1;
    for (var i = 1; i <= this; i++) {
      re *= i;
    }
    return re;
};
var num = 3;
alert(num.N());

7.防抖和节流

用户过于频繁的操作,会不停的和服务端进行数据交互,所以我们需要使用防抖,只保留最后一次的操作,从而实现优化性能的作用。

<input type="text" id="inp" />
    <script>
      var timer = null;
      document.querySelector("#inp").oninput = function() {
        if (timer != null) {
          clearTimeout(timer);
        }
        timer = setTimeout(() => {
          console.log(this.value); //打印输入框的值  实际上这里的代码就应该是发送后端,实现数据交互了
        }, 1000);
      };
    </script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值