一、嵌套循环
for循环的嵌套就是一个大的for循环里面嵌套着一个或是多个小的for循环。
1、嵌套for 循环语法结构:
for(外层初始化变量 ; 外层的条件表达式 ; 外层的更新表达式) {
for(里层的初始化变量 ; 里层的条件表达式 ; 里层的操作表达式) {
// 执行语句
}
}
案例:
// 2.输出1-100之间的所有偶数
for (var i = 1; i < 101; i++) {
if (i % 2 != 0) {
continue
// break
}
console.log(i)
}
/* break语句和continue语句的区别:
break语句跳出整个循环,循环不在继续
continue语句跳出本次循环,继续执行下一次循环,直到循环结束
4的因数:1、2、4、
6的因数:1、2、3、6、
8的因数:1、2、4、8、
*/
//求n的因数:
var n = 16
for (var i = 1; i < n; i++) {
if (n % i == 0) {
console.log(i)
}
}
// 请输出100以内的所有质数(是指一个大于1的自然数,除了1和它自身外,
// 不能被任何数进行整除的自然数整除,)
// 嵌套循环执行时,先通过外层循环进入循环体,在内层循环结束后,程序会再次执行外层循环。
for (var i = 2; i < 101; i++) {
var count = 0; //又来储存被整除的数
for (var j = 2; j < i; j++) {
// 将当前整数i与2-(i-1)之间的整数进行取余,如果余数为零,则当前整数不是质数。
if (i % j == 0) {
count++
}
}
if (count == 0) {
console.log(i)
}
}
// 九九乘法表
for (var i = 1; i <= 9; i++) {
for (var j = 1; j <= i; j++) {
document.write(j + '×' + i + '=' + i * j + "\t");
}
document.write("<br>");
}
二 、常用内置对象
JavaScript中的对象分为3种:内置对象、浏览器对象、自定义对象
JavaScript 提供多个内置对象:Math/Array/NumberlString/Boolean...
1、 Math对象:
Math对象不是构造函数,它具有数学常数和函数的属性和方法,都是以静态成员的方式提供跟数学相关的运算来找Math中的成员(求绝对值,取整)
与其他全局对象不同的是,Math 不是一个构造器。Math 的所有属性与方法都是静态的。引用圆周率的写法是 Math.PI,调用正余弦函数的写法是 Math.sin(x),x是要传入的参数。Math的常量是使用JavaScript 中的全精度浮点数来定义的。
常用属性和方法:
// Math对象
console.log(Math.PI)
// 求出最大值
console.log(Math.max(30, 20, 50, 100))
// 求出最小值
console.log(Math.max(30, 20, 50, 100))
// 随机数[0,1]
console.log(Math.random())
// Math.random()
var floor = Math.floor(3.8) //向下取整
console.log(floor)
var ceil = Math.ceil(3.8) //向上取整
console.log(ceil)
// 随机出1-10之间的任意整数
// [0,1]
console.log(Math.floor(Math.random() * 10 + 1))
//Math.round()四舍五入
console.log(Math.round(4.2)) //4
console.log(Math.round(4.7)) //5
console.log(Math.pow(3, 3))
案例:
// 猜数字游戏
// 随机产生一个1-10之间的任意整数
var random = Math.floor(Math.random() * 10 + 1)
// 输入一个数
// var num = parseInt(prompt("请输入一个1-10之间的整数:"))
var count = 0;
for (var i = 0; i < 5; i++) {
num = parseInt(prompt("请输入一个1-10之间的整数:"))
if (num > random) {
count++
alert("你输入的数字太大了,您已经猜错了" + count + "次了,还剩余" + (5 - count) + "次机会!请重新输入。")
} else if (num < random) {
count++
alert("你输入的数字太小了,您已经猜错了" + count + "次了,还剩余" + (5 - count) + "次机会!请重新输入。")
// num = parseInt(prompt("请输入一个1-10之间的整数:"))
} else {
alert("恭喜你猜对了")
break
}
}
2、 Date对象
创建Date实例用来处理日期和时间。Date对象基于1970年1月1日(世界标准时间)起的毫秒数。
//获取当前时间,UTC世界时间,距1970年1月1日(世界标准时间)起的毫秒数
var now = new Date(;
console.log(now.valueof();//获取距1970年1月1日(世界标准时间)起的毫秒数
/* Date构造函数的参数
1.毫秒数1498099000356 new Date(1498099000356)
2.日期格式字符串"2015-5-1' new Date( '2015-5-1')
3.年、月、日...... new Date(2015,4,1)1/月份从0开始
*/
1)、常用属性和方法
var now = new Date()
console.log(now)
// 2022-08-02
var year = now.getFullYear()
var month = now.getMonth() + 1
var date = now.getDate()
// 格式化月份
month = month > 9 ? month : "0" + month
// 格式化日期
date = date > 9 ? date : "0" + date
var time = year + "-" + month + "-" + date
console.log(time)
// 模拟一个朋友圈
// Date.parse("2022-8-1 12:35:09")
// 获取到当前时间
var now = new Date()
// 获取发布朋友圈的时间
var fbtime = new Date("2022-8-1 12:35:09")
// 转换成毫秒
now = Date.parse(now)
fbtime = Date.parse(fbtime)
// console.log(now)
// console.log(fbtime)
// 计算时间差
var time = now - fbtime
// 转换成秒
var secondTime = parseInt(time / 1000)
// 转换成分钟
var minutesTime = parseInt(time / 1000 / 60)
// 转换小时
var hoursTime = parseInt(time / 1000 / 60 / 60)
// 转换成天数
var daysTime = parseInt(time / 1000 / 60 / 60 / 24)
console.log(secondTime)
console.log(minutesTime)
console.log(hoursTime)
console.log(daysTime)
// 分支结构判断,根据不同的情况输出不同的结果
if (daysTime >= 1) {
console.log(daysTime + "天以前")
} else if (hoursTime > 0 && hoursTime < 24) {
console.log(hoursTime + "小时以前")
} else if (minutesTime > 0 && minutesTime < 60) {
console.log(minutesTime + "分钟以前")
} else if (secondTime > 0 && secondTime < 60) {
console.log(secondTime + "秒以前")
}
2、拓展:定时器
setInterval(code,millisec,lang)∶按照指定的周期(以毫秒计)来调用函数或计算表达式。方法会不停地调用函数,直到clearlnterval()被调用或窗口被关闭。
. setTimeout(code,millisec,lang)︰在指定的毫秒数后调用函数或计算表达式。
var num = 0
var timer = setInterval(function() {
if (num < 5) {
console.log(++num);
} else {
clearInterval(timer)
}
}, 100)
var count = 0
var timer = setInterval(function() {
if (count < 5) {
count++
console.log(count)
} else {
clearInterval(timer)
}
}, 100)
var count = 5
var timer = setInterval(function() {
if (count > 0) {
console.log(count)
count--
} else {
clearInterval(timer)
}
}, 100)
3、string对象
string全局对象是一个用于字符串或一个字符序列的构造函数。
常用属性和方法:
var str = "Hello World"
// [2,4)substring(): 从开始位置截取,到指定位置结束,但取不到结束位置的字符
console.log(str.substring(2, 4))
// substr():从开始位置截取,截取指定长度的字符串。
console.log(str.substr(2, 5))
// concat():拼接字符串,等效于+。
console.log(str.concat("aaa"))
// slice()
console.log(str.slice(1, 3))
// indexOf():返回的是一个字符串的索引值,
// 还可以用于判断某个字符是否存在于某个字符串中
console.log(str.indexOf("a"))
// 要将str中的l全部替换成*
// replace():替换的是满足条件的第一个字符
console.log(str.replace("l", "*"))
// 将str = "Hello World"中的"1"全部替换成"*"
var str = "Hello World"
// str = str.replace("l", "*") //He*lo World
// str = str.replace("l", "*") //He**o World
// str = str.replace("l", "*") //He**o Wor*d
for (var i = 0; i < str.length; i++) {
str = str.replace("l", "*")
}
console.log(str)
// 查找一个字符串中某个字符所有出现的位置
var str = "Hello World"
// 简单的方法
for (var i = 0; i < str.length; i++) {
// console.log[i]
if (str[i] == "l") {
console.log(i)
}
}