1.防抖和节流怎么实现?
防抖:触发事件后在 n 秒内函数只能执行一次,如果在 n 秒内又触发了事件,则会重新计算函数执行时间;
let _debounce = (fn, wait, context) => {
let timer = null;
return (...args) => {
if (timer !== null) {
clearTimeout(timer)
}
timer = setTimeout(() => {
fn.apply(context, args)
timer = null
}, wait)
}
}
节流:一个连续触发的事件,为了降低执行频率,限制其在 n 秒中只执行一次回调函数的方式;
let _throttle = (fn, wait, context) => {
let timer = null;
return (...args) => {
if (timer) {
return;
}
timer = setTimeout(() => {
fn.apply(context, args)
timer = null
}, wait)
}
}
2.冒泡排序怎么实现?
冒泡排序:它是一种基础的交换排序,从序列中第一个元素开始依次对相邻的两个元素进行比较,经过多轮比较后使得元素按照升序或者降序进行排列的一种排序算法。
let list = [1, 50, 30, 88, 22, 93, 55]
function bubbleSort() {
let temp
for (let i = 0; i < list.length - 1; i++) {
for (let j = 0; j < list - i - 1; j++) {
if (list[j] > list[j + 1]) {
temp = list[j]
list[j] = list[j + 1]
list[j + 1] = temp
}
}
}
return list
}
3.获取字符串最后一个单词的长度
题目描述
计算字符串最后一个单词的长度,单词以空格隔开,字符串长度小于5000。(注:字符串末尾不以空格为结尾)
输入描述
输入一行,代表要计算的字符串,非空,长度小于5000。
输出描述
输出一个整数,表示输入字符串最后一个单词的长度。
let str = 'hello world.'
function getLastWordLen(str) {
let _wordList = str.split(' ');
return _wordList[_list.length - 1]
}
console.log(getLastWordLen(str))
4.计算某字符出现次数
题目描述
写出一个程序,接受一个由字母、数字和空格组成的字符串,和一个字符,然后输出输入字符串中该字符的出现次数。(不区分大小写字母)数据范围: 1 \le n \le 1000 \1≤n≤1000
输入描述:
第一行输入一个由字母和数字以及空格组成的字符串,第二行输入一个字符。输出描述:
输出输入字符串中含有该字符的个数。(不区分大小写字母)
let str = 'ABCabc'
function getCharNum(str, char) {
let _charList = str.match(new RegExp(char, 'ig')) || [];
return _charList.length;
}
console.log(getCharNum(str, 'a'))
5.明明的随机数
描述
明明生成了NN个1到500之间的随机整数。请你删去其中重复的数字,即相同的数字只保留一个,把其余相同的数去掉,然后再把这些数从小到大排序,按照排好的顺序输出。数据范围: 1 \le n \le 1000 \1≤n≤1000 ,输入的数字大小满足 1 \le val \le 500 \1≤val≤500
输入描述
第一行先输入随机整数的个数 N 。 接下来的 N 行每行输入一个整数,代表明明生成的随机数。 具体格式可以参考下面的"示例"。输出描述
输出多行,表示输入数据处理后的结果
//牛客网 javascript V8
function fn() {
const genNumCount = readline();
let numSet = new Set();
for (let i = 0; i < genNumCount; i++) {
numSet.add(readline());
}
let numList = new Array(...numSet);
return numList
.sort((prev, next) => {
return prev - next;
})
.join("\n");
}
print(fn());
6.字符串分割
描述
•输入一个字符串,请按长度为8拆分每个输入字符串并进行输出;•长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。
输入描述:
连续输入字符串(每个字符串长度小于等于100)输出描述:
依次输出所有分割后的长度为8的新字符串
//牛客网 javascript V8
let line;
while ((line = readline())) {
if (line === "") {
continue;
}
const _extraNumber = line.length % 8;
const result = line.concat(
new String("0").repeat(_extraNumber ? 8 - _extraNumber : 0)
);
for (let i = 0; i < result.length; ) {
print(result.substring(i, (i += 8)))
}
}
7.进制转换
描述
•输入一个字符串,请按长度为8拆分每个输入字符串并进行输出;•长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。
输入描述:
连续输入字符串(每个字符串长度小于等于100)输出描述:
依次输出所有分割后的长度为8的新字符串
let line;
while (line = readline()) {
print(parseInt(line, 16));
}