问题1:生成16进制随机颜色
//思路:
// 固定字符#,直接固定拼接上去
// 控制输出未6位数,其中数字在0-f
let str = "#";
//循环的规则数据
const arr = ["0", "1","2","3","4","5","6","7","8", "9", "a","b", "c","d","e","f","A","B","C","D","E","F",];
//控制需要几位数
for (i = 0; i < 6; i++) {
str += arr[Math.floor(Math.random() * arr.length)];
}
console.log(str)
问题2:找出以下字符串中出现次数最多的字符和出现的次数 字符串:"abaasdffggghhjjkkgfddsssss3444343"
//要求
1、字符用的长度:
2、取出指定位置的字符,如:0,3,5,9等
3、查找指定字符是否在以上字符串中存在,如:i,c,b等
4、替换指定的字符,如:g替换为22,ss替换为b等操作方法
5、截取指定开始位置到结束位置的字符串,如:取得1-5的字符串
6、找出以上字符串中出现次数最多的字符和出现的次数
7、遍历字符串,并将遍历出的字符两头添加符号"@”
const str="abaasdffggghhjjkkgfddsssss3444343“
//1、获取字符用的长度:
const length=str.length
//2、取出指定位置的字符,如:0,3,5,9等
function findStr(str, ...args) {
if(args.length===0) throw new Error("请输入要查找的索引值")
if(str.length===1)return str[0]
let chars=[]
args.map((i)=>{
chars.push(str[i])
})
return chars
}
console.log(findStr(str));
//3、查找指定字符是否在以上字符串中存在,如:i,c,b等
function findExist(str, ...args) {
if(args.length===0) throw new Error("请输入要查找的字符是否存在")
if (args.length == 1) return str.includes(...args);
let res = [];
args.map((item) => {
res.push(str.includes(item));
});
return res;
}
console.log(findExist(str, "i"));
//4、替换指定的字符,如:g替换为22,ss替换为b等操作方法
function replaceStr(str,replaceItem,toRep){
//找到要被替换的值的下标
return str.replaceAll(replaceItem,toRep)
}
console.log(replaceStr(str,"sssss","g"))
console.log(replaceStr(str,"ss","22"))
//5、截取指定开始位置到结束位置的字符串,如:取得1-5的字符串
function subStr(str, start, end) {
//可扩展它不存在的时候
if (start && typeof start !== "string") start = +start;
if (end && typeof start !== "string") end =+end;
if (!(start+"")) return;
if (!end) return str.slice(start);
return str.slice(start, end);
}
//找出以上字符串中出现次数最多的字符和出现的次数
function findMaxChar(str){
const sum=[...str].reduce((pre, cur) => {
//获取所有对象与值
if (pre[cur]) {
pre[cur]++;
} else {
pre[cur] = 1;
}
return pre;
}, {});
//只需要对比其中的某个数值排序获得其第一位
const res= Object.entries(sum).sort ((x,y)=>y[1]-x[1])
//解构出来
const [[char,num]]=res
//设置其返回值
return {
char,
num
}
}
console.log(findMaxChar(str))
//6、遍历字符串,并将遍历出的字符两头添加符号"@”
let result1 = "";
for (let char of str) {
result1+="@"+char+"@"
}
console.log(result1)
问题3:把下面数组的首尾两个元素互换
思路:解构出来再交换
var arr = ["鹿晗", "王俊凯", "蔡徐坤", "彭于晏", "周杰伦", "刘德华", "赵本山"];
if(arr.length){
[arr[0],arr[arr.length-1]]=[arr[arr.length-1],arr[0]]
}
问题4:计算指定日期是今年的第几天
题目描述:制作一个函数,getDayNum(年月日日期),可以返回指定日期是当前年的第几天
getDayNum( "2019-1-2")返回值为:2
function getDayNum(time) {
let date = new Date(time);
let year = date.getFullYear();
// 利用 Date.UTC 计算该日期与年初的天数差
let startOfYear = Date.UTC(year, 0, 1);//过年第一天
let currentDate = Date.UTC(year, date.getMonth(), date.getDate());//当前年数/月数/日期
return Math.floor((currentDate - startOfYear) / (1000 * 60 * 60 * 24)) + 1;
}
console.log(getDayNum("2022-7-23")); // 输出:204