<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
// 定义一个字符串,针对字符串去重
// 封装成函数
// var str1 = 'fjasklfhiasonvsadkfjaskl';
function fn1(n){
var nstr = "";
for(var i=0;i<n.length;i++){
// console.log(n[i]); //
if(nstr.indexOf(n[i]) === -1){
nstr += n[i];
}
}
return nstr;
}
var ns1 = fn1('fjasklfhiasonvsadkfjaskl');
console.log(ns1); // 'fjasklhionvd'
var ns2 = fn1('aabbccddeefffgg');
console.log(ns2); // 'abcdefg'
console.log('-----------------华丽的分割线--------------');
// 定义一个字符串,统计字符串中每个字符出现的次数
// 统计的次数 建议用 对象收集
// {f:10,j:5,a:3}
// 封装成函数
// var str2 = 'fjasklfhiasonvsadkfjaskl';
function fn2(n){
var o = {};
// 查看访问一个对象的成员,
// 如果对象有这个成员,就返回 这个key的值
// 如果对象没有这个成员,就返回 undefined
// console.log(o.f);
for(var i=0;i<n.length;i++){
// console.log(n[i]); // f j a s k l f h i a
// 获取到 对象的键,判断对象的这个键的值是什么
// 如果是 对象的键的值 转换成 布尔值是 true 说明 对象中有这个键,给他的值+1
// 如果是 对象的键的值 转换成 布尔值是 false 说明 对象中没有有这个键,给他 添加这个键 赋值为 1
if(o[n[i]]){
o[n[i]]++; // o[n[i]] = o[n[i]]+1;
}else{
o[n[i]] = 1;
}
}
// console.log(o)
return o;
}
var oc1 = fn2('fjasklfhiasonvsadkfjaskl')
console.log(oc1);
var oc2 = fn2('abbccaddebcd')
console.log(oc2);
function fn3(n){
var o = {};
for(var i=0;i<n.length;i++){
// console.log(n[i]); //
// 外层循环 执行那个值 就给 对象 添加一个 这个值为key
o[n[i]] = 0;
for(var j=0;j<n.length;j++){
// console.log(n[j]); //
// 只要 外层循环的值 与 内层循环的值 相等 说明 出现 一次
if(n[i] === n[j]){
o[n[i]]++;
}
}
}
return o;
}
var oc3 = fn3('fjasklfhiasonvsadkfjaskl')
console.log(oc3);
console.log('-----------------华丽的分割线--------------');
// 定义一个字符串,针对字符串去重,并且统计去重前字符串中每个字符出现的次数
// 封装成函数
// 返回 一个数组,
// 数组的第0项是去重后的字符串
// 数组的第1项是统计字符次数的对象
// [
// 'fjas....',
// {
// f:5,
// j:4
// }
// ]
// var str3 = 'fjasklfhiasonvsadkfjaskl';
function fn4(n){
var na = [];
// 去重
var nstr = "";
for(var i=0;i<n.length;i++){
if(nstr.indexOf(n[i]) === -1){
nstr += n[i];
}
}
na[0] = nstr;
// 统计次数
var o = {};
for(var i=0;i<n.length;i++){
if(o[n[i]]){
o[n[i]]++;
}else{
o[n[i]] = 1;
}
}
na[1] = o;
return na;
}
var arr1 = fn4('fjasklfhiasonvsadkfjaskl');
console.log(arr1);
// 和谐不文明词汇
// 定义一个数组,将 不文明词汇 存在 数组中 自行补充
// var arr = ['尼玛','我干','草','瞎']
// 给定一个字符串,是一句话
// var str = '是不是瞎,尼玛的,信不信我干你,草,真是服了草';
// '是不是***,***的,信不信***你,***,真是服了';
// 将这句话中的不文明词汇和谐掉,替换成 "***" 会用到字符的 替换字符 的方法
// 最终封装成一个方法,传入 字符串,返回被和谐的结果(字符串)
function hexie(str){
// console.log(str);
var arr = ['尼玛','我干','草','瞎'];
for(var i=0;i<arr.length;i++){
while(true){
if(str.indexOf(arr[i]) === -1){
break;
}else{
str = str.replace(arr[i],"888");
}
}
}
// console.log(str);
return str;
}
var nstr = hexie('是不是瞎,尼玛的,信不信我干你,草,草,真是服了草,尼玛,真实草了,我干')
console.log(nstr); //
// 思考
var arr1 = [3<2<1,1>2>3];
console.log(arr1); //
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
// 思考
var arr1 = [3<2<1,1>2>3];
// [flae<1,flase>3]
// [0<1,0>3]
// [true,false]
console.log(arr1); // [true,false]
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
// Math对象 --- 数学对象
// Math对象 属于 js的内置对象
// 使用用来操作 数字的一个对象
// 在 Math对象上 有一些 属性 和 方法 方便我们 操作数字
// Math对象 的 一些 属性 和 方法
// Math.ceil() 对数字进行向上取整
var a = Math.ceil(34.4);
console.log(a); // 35
// Math.floor(num) 对数字进行向下取整
var b = Math.floor(34.4);
console.log(b); // 34
// Math.round(num) 对数字进行四舍五入
var c = Math.round(38.3);
console.log(c); // 38
var d = Math.round(56.7);
console.log(d); // 57
// Math.PI 圆周率 π 3.1415926.......
console.log(Math.PI); // 3.141592653589793
// Math.min() 返回参数中的 最小值
var e = Math.min(23,98,45);
console.log(e); // 23
var f = Math.min(23,98,45,5,21,17);
console.log(f); // 5
// Math.max() 返回参数中的 最大值
var g = Math.max(23,98,45);
console.log(g); // 98
var h = Math.max(23,98,45,5,21,17);
console.log(h); // 98
// Math.sqrt() 返回 参数数字的 平方根 --- 开根号
var i = Math.sqrt(9);
console.log(i); // 3
var j = Math.sqrt(11);
console.log(j); // 3.3166247903554
var k = Math.sqrt(16);
console.log(k); // 4
var l = Math.sqrt(15);
console.log(l); // 3.872983346207417
// Math.pow(num,n) 计算数字num的n次方 --- 幂次方
var m = Math.pow(4,5);
console.log(m); // 1024
// Math.abs(num) 返回绝对值
var n = Math.abs(21);
console.log(n); // 21
var o = Math.abs(-14);
console.log(o); // 14
// Math.random() 返回介于0~1之间的一个随机数
var num = Math.random();
console.log(num);
// 需要针对这个方法进行二次定义开发 可以帮助实现 指定区间的随机数
// 公式:Math.floor(Math.random() * (max-min+1) + min)
var rnum = Math.floor(Math.random() * (20-5+1) + 5);
console.log(rnum);
// console.log(Math.random())
// console.log(0.99999999999 * 16)
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
// Date对象 日期对象--时间对象
// 是 js 原生的 时间库
// 以1970年1月1日00:00:00作为时间的零点,可以表示的时间范围是前后各1亿天
// 获取时间
// 时间对象的创建 --- js内部了一个构造函数 Date,通过在函数调用给前 加上new关键字创建
// 如果 不传参 的到的就是 当前时间
var d1 = new Date();
console.log(d1);
// 可以通过 传参得到 过去时间 或 未来时间 ---- 指定时间
var d2 = new Date('2018 6 22 13:14:30');
console.log(d2);
var d3 = new Date('2023-5-20 13:14:00');
console.log(d3);
// 也可以通过多个参数指定时间,但是这种情况下月份会有问题
// 0是一月,1是二月,.....,11是十二月
// 仅限于多个参数 获取 指定时间时 是这样的
var d4 = new Date(2023,5,20,13,14,0);
console.log(d4);
console.log(typeof d2); // 'object'
// 引用数据类型(复杂数据类型、对象数据类型)
// function
// Array
// Object
// Date
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
// 当前时间
var d1 = new Date();
console.log(d1);
// 指定时间
var d2 = new Date('2018-5-20 13:14:08');
console.log(d2);
// getFullYear() 获取 日期对象的 年份 --- 返回 4位数字
var year1 = d1.getFullYear();
console.log(year1); // 2022 当前的年份
var year2 = d2.getFullYear();
console.log(year2); // 2018
// getMonth() 获取 日期对象的 月份 --- 返回 0-11的数字
// 0是一月,1是二月,.....,11是十二月
// 使用时 需要 +1 使用
var month1 = d1.getMonth()+1;
console.log(month1); // 11 当前的月份
var month2 = d2.getMonth()+1;
console.log(month2); // 5
// getDate() 获取 日期对象的 日期 --- 返回 1-31的数字
var day1 = d1.getDate();
console.log(day1); // 18 当前的日期
var day2 = d2.getDate();
console.log(day2); // 20
// getHours 获取 日期对象的 小时 --- 返回 0-23的数字
var hours1 = d1.getHours();
console.log(hours1); // 17 当前的小时
var hours2 = d2.getHours();
console.log(hours2); // 13
// getMinutes() 获取 日期对象的 分钟 --- 返回 0-59的数字
var minutes1 = d1.getMinutes()
console.log(minutes1); // 19 当前的分钟
var minutes2 = d2.getMinutes()
console.log(minutes2); // 14
// getSeconds() 获取 日期对象的 秒 --- 返回 0-59的数字
var seconds1 = d1.getSeconds()
console.log(seconds1); // 51 当前的秒
var seconds2 = d2.getSeconds()
console.log(seconds2); // 8
// getDay() 获取 日期对象的 星期 --- 返回 0-6的数字
// 0是星期日,1是星期一,2是星期二,......,6是星期六
var week1 = d1.getDay();
console.log(week1); // 5 当前的星期
var week2 = d2.getDay();
console.log(week2); // 0
// getTime() 获取时间戳:获取 日期对象时间 距离1970年1月1日0时0分0秒的 毫秒数(1s === 1000ms)
// 实现 倒计时 或 正计时都需要 使用到 时间戳
var time1 = d1.getTime();
console.log(time1); // 1668764131679 当前的时间戳
var time2 = d2.getTime();
console.log(time2); //
document.write('今天是'+year1+'年'+month1+'月'+day1+'日 '+doubleNum(hours1)+':'+doubleNum(minutes1)+':'+doubleNum(seconds1)+' 星期'+weekN(week1));
// 封装 数字小于10前面补0 的方法
function doubleNum(n){
return n<10?'0'+n:n;
}
function weekN(n){
var w;
switch(n){
case 0:
w = '日';
break;
case 1:
w = '一';
break;
case 2:
w = '二';
break;
case 3:
w = '三';
break;
case 4:
w = '四';
break;
case 5:
w = '五';
break;
case 6:
w = '六';
break;
}
return w;
}
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script src="./../../../public.js"></script>
<script>
// // 当前时间
// var d1 = new Date();
// // 指定的 将来时间
// var d2 = new Date('2023-3-11 18:00:00');
// // 计算时间差 用 后面的时间 - 前面的时间 的时间戳 单位是毫秒, 转换成 秒单位
// var timer = (d2.getTime() - d1.getTime())/1000;
// console.log(timer);
// // 计算 时间差值 中 包含 多少 天 时 分 秒
// // 天 60*60*24 === 86400 秒
// var day = parseInt(timer/86400);
// console.log(day);
// // 时 减去整天时长 剩余 不够整天的时间计算 零多少小时
// // 60*60 === 3600 秒
// var hour = parseInt(timer%86400/3600);
// console.log(hour);
// // 分 60秒
// var mint = parseInt(timer%3600/60);
// console.log(mint);
// // 秒
// var sec = parseInt(timer%60);
// console.log(sec);
// document.write('距离一个让人兴奋的时间还有 '+day+'天 '+doubleNum(hour)+':'+doubleNum(mint)+':'+doubleNum(sec));
// 间隔定时器 --- 指定间隔多长时间(毫秒) 执行一次 函数中的代码
// 第一个参数 是函数,需要执行的代码 写在函数中
// 第二个参数 是时间戳(毫秒数),间隔的时间
setInterval(function(){
// 当前时间
var d1 = new Date();
// 指定的 将来时间
var d2 = new Date('2023-3-11 18:00:00');
// 计算时间差 用 后面的时间 - 前面的时间 的时间戳 单位是毫秒, 转换成 秒单位
var timer = (d2.getTime() - d1.getTime())/1000;
console.log(timer);
// 计算 时间差值 中 包含 多少 天 时 分 秒
// 天 60*60*24 === 86400 秒
var day = parseInt(timer/86400);
console.log(day);
// 时 减去整天时长 剩余 不够整天的时间计算 零多少小时
// 60*60 === 3600 秒
var hour = parseInt(timer%86400/3600);
console.log(hour);
// 分 60秒
var mint = parseInt(timer%3600/60);
console.log(mint);
// 秒
var sec = parseInt(timer%60);
console.log(sec);
// document.write('距离一个让人兴奋的时间还有 '+day+'天 '+doubleNum(hour)+':'+doubleNum(mint)+':'+doubleNum(sec));
// document.body 获取到body标签
// innerHTML 设置标签的内容
document.body.innerHTML = '距离一个让人兴奋的时间还有 '+day+'天 '+doubleNum(hour)+':'+doubleNum(mint)+':'+doubleNum(sec);
},1000);
// setInterval(function(){
// 执行的代码
// },1000);
</script>
</body>
</html>