<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<!--"一闪一闪亮晶晶,漫天都是小星星"统计字符串中每个字符串出现的次数-->
<script>
window.onload = function () {
cishu();
xiaoxingxing();
}
function xiaoxingxing() {
var str = "一闪一闪亮晶晶,漫天都是小星星";
//声明键值对,键放入每个文字,值放出现的次数
//js中的键值对是使用对象的形式来使用的
// var v={'name:':'zhangsan','age':22};
var jianzhidui = {};
//遍历这个字符串,判断键值对中的键是否存在这个文字,如果存在就让他的值+1,不存在就新建键的属性,并设置出现的次数为1
for (var i = 0; i < str.length; i++) {
//如何去判断,得到每个文字
var wz = str.charAt(i);
if (jianzhidui[wz]) {
jianzhidui[wz] += 1;
} else {
jianzhidui[wz] = 1;
}
}
//遍历一下键值对
for (var i in jianzhidui) {
document.write(i + "出现了" + jianzhidui[i] + "次<br>");
}
}
function cishu() {
var str = "一闪一闪亮晶晶,满天都是小星星";
var xing;
var cnt = 0;
//indexOf括号内的参数,第一个是需要寻找的变量,第二个是第一个变量的个数
while ((xing = str.indexOf("星", xing)) != -1) {
xing++;
cnt++;
}
alert("星出现了" + cnt + "次");
}
</script>
<!-- 输入的带有小数点的数对小数点后几位进行四舍五入 -->
<script>
const toFixed = (number, n) => {
let numberStr = number + "";
let reg = /^(-|\+)?(\d+(\.\d*)?|\.\d+)$/i;
if (!reg.test(numberStr)) {
alert('输⼊的数字格式不对');
return;
}
let sign = numberStr.charAt(0) === '-' ? (numberStr = numberStr.slice(1), -1) : 1; // 判断是否是负数
let pointIndex = numberStr.indexOf("."); // 记录⼩数点的位置
if (pointIndex > -1) {
numberStr = numberStr.replace(".", "");
} else { // 没有⼩数点直接添加补0;
numberStr += ".";
numberStr += new Array(n).join('0');
return numberStr;
}
let numberArray = numberStr.split(""); //转成数组
let len = numberArray.length;
let oldPointNum = len - pointIndex; // 获取原数据有多少位⼩数
if (oldPointNum < n) { // 要保留的⼩数点⽐原来的要⼤,直接补0
while (n - oldPointNum > 0) {
numberArray.push(0);
n--;
}
} else if (oldPointNum > n) { // 模拟四舍五⼊
let i = oldPointNum - n; // 从倒数第i个数字开始⽐较
let more = numberArray[len - i] >= 5 ? true : false;
while (more) {
i++;
more = +numberArray[len - i] + 1 === 10 ? true : false; // 进位后判断是否等于10,是则继续进位
numberArray[len - i] = more && i !== (len + 1) ? 0 : +numberArray[len - i] + 1; // 其他位置的数字进位直接变成0,第⼀位的例外
}
numberArray.length = len - (oldPointNum - n); // 截取多余的⼩数
}
numberArray.splice(pointIndex, 0, ".");
return sign === -1 ? '-' + numberArray.join("") : numberArray.join("");
};
console.log(toFixed(3.890098, 1))
</script>
<!-- 经典易错面试题 -->
<script>
//1、实现add函数 add(2,5); // 7 add(2)(5); // 7
function add(a) {
return function (b) {
return a + b;
}
}
console.log(add(2)(5));
//2、window.foo的值是什么
window.foo = [];// 0 null NaN 结果都是bar
window.foo || (window.foo = 'bar');
console.log(window.foo); // bar
//3、异步代码
console.log('A');
let f1 = new Promise((resolve, reject) => {
console.log('B');
setTimeout(() => console.log('C'), 0);
resolve();
console.log('D');
});
console.log('E');
f1.then(() => console.log('F'));
Promise.resolve().then(() => console.log('G')); // ABDEFGC
</script>
</head>
<body>
</body>
</html>
倒计时
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>时钟和倒计时</title>
<script>
window.onload=function(){
//setInterval(shizhong,1000);
i=prompt("请输入倒计时的时间");
}
function shizhong(){
var date=new Date();
var year=date.getFullYear();//得到年份
var month=date.getMonth();//得到月份需要+1
var day=date.getDate();//得到日
var xingqi =date.getDay();//得到周几(0代表周日)
var hours=date.getHours();//得到小时,24小时制的
var minute=date.getMinutes();//得到分钟
var second=date.getSeconds();//得到秒
var div1=document.getElementById("div1");
div1.innerHTML="当前时间为:"+year+"年"+month+"月"+day+"日"+hours+":"+minute+":"+second;
}
var i;
function zhixingdaojishi(){
i--;
var div1=document.getElementById("div1");
div1.innerHTML="倒计时还有"+i+"秒";
if(i==0){
alert("倒计时结束");
zanting();
}
}
var jieshou=null;//用来判断倒计时是否暂停的变量
function kaishi(){
if(jieshou==null){
jieshou=setInterval(zhixingdaojishi,1000);
}
}
function zanting(){
clearInterval(jieshou);
jieshou=null;
}
</script>
</head>
<body>
<div id="div1"> </div>
<input type="button" value="开始倒计时" onclick="kaishi()" />
<input type="button" value="暂停" onclick="zanting()" />
</body>
</html>