一、将这段字符串 "I'm????driving????to??beijing????after?breakfast",格式化为:"I'm driving to beijing after breakfast"。
var str = "I'm????driving????to??beijing????after?breakfast",
sub="";
for(let i = 0; i < str.length; i++){
if(str[i] != '?'){
sub += str[i];
isFirstSpace = false;
}else if(!isFirstSpace){
sub += " ";
isFirstSpace = true;
}
}
console.log(sub);
二、不可用 JavaScript 控制循环的方法和关键字,最终生成数组 [3, 6, ...]。
- 范围和初始值都使用参数控制;
- 每次加 3。
function fn(num, max, arr){
if (typeof num !== "number") return false;
if (typeof max !== "number") return false;
arr.push(num);
if(num === max) return arr;
return fn(num+3, max, arr);
}
fn(3, 30, []);
console.log(fn(3, 30, []));
三、请给出下面代码的输出结果(Promise + setTimeout)
console.log("a");
let promise = new Promise(function(resolve, reject){
setTimeout(function(){
console.log('b');
},0);
console.log('c');
resolve();
});
promise.then(() => {
console.log("d");
setTimeout(function(){
console.log("e");
},0)
});
setTimeout(() => {
console.log("f");
},0)
console.log("g");
解析:
本题考查的知识点是:
- Promise 本身是同步的,他的 then() 方法和 catch() 方法是异步的。
- setTimeOut 本身是同步的,用来通过设置延迟时间来模拟异步而已。
该题的解题思路可以分为四步:
- 第一步,输出的是同步的、非 setTimeout 的代码。
- 第二步,输出的是异步的、非 setTimeout 的代码。
- 第三步,输出的是setTimeout 的、同步的代码。
- 第四步,输出的是setTimeout 的、异步的代码。
1、找出同步的、非 setTimeout 的代码
console.log("a");
let promise = new Promise(function(resolve, reject){
console.log('c');
});
console.log("g");
所以,先打印的是:a c g。
2、找出异步的、非 setTimeout 的代码
let promise = new Promise(function(resolve, reject){
resolve();// 执行 then() 里的内容
});
promise.then(() => {
console.log("d");
});
然后,打印的是: d。
3、找出setTimeout 的、同步的代码。
let promise = new Promise(function(resolve, reject){
setTimeout(function(){
console.log('b');
},0);
});
setTimeout(() => {
console.log("f");
},0);
然后,输出的是:b f。
4、找出setTimeout 的、异步的代码。
promise.then(() => {
setTimeout(function(){
console.log("e");
},0)
});
最后,输出的是:e。
所以,最后的完整输出顺序是:a c g d b f e。
四、统计一个字符串中出现次数最多的字符,并且统计出现的次数
/*
统计一个字符串中出现次数最多的字符,并且统计出现的次数
input: 'abbbccbcccda'
output: ['c', 5]
*/
function sollution (str) {
let item = ''
let num = 0
for (let i = 0; i <= str.length; i++) {
let a = str.split(str[i])
if ((a.length) > num) {
num = a.length
item = str[i]
}
}
return [item, num - 1]
}
sollution('abbbccbcccda')
// [ 'c', 5 ]