循环结构【while、do while、for】
重复执行一段代码
A.【while】循环
1、初始值
while(2、条件){
3、执行代码
4、迭代
}
复制代码
B.【do while】循环
1、初始值
do{
3、执行的代码
4、迭代
}while(2、条件)
复制代码
注意:先执行do中的代码 然后再判断条件
C.【for】循环
for循环和while 本质上 一样的 将初始值 判断条件 和迭代放到一个专门的地方 结构更清晰
for(1、初始值;2、条件;3迭代){
4、执行的代码
}
复制代码
执行:
1-->2(判断是否成立 成立就执行4)
4-->3
3-->2
2-->4 。。。。。 直到2不成立
复制代码
一般当循环次数 不固定时我们使用while 次数固定时使用for循环
for循环
的四个部分是可以省略的
continue:结束本次循环 直接进行下次循环
for(var i=0;i<10;i++){
if(i==5)
continue
console.log(i);
}
复制代码
break: 结束当前循环
for(var i =0;i<10;i++){
if(i==5)
break;
console.log(i);
}
复制代码
使用break跳出双层循环
添加一个 标签 outer 然后 使用 break outer;
outer: for(var i =0;i<10;i++){
for(var j =0;j<i;j++){
if(j==3){
break outer;
}
document.write("* ");
}
document.write("<br>");
}
复制代码
(在实际开发过程中,循环语句是经常使用的,必须掌握!!)
遍历经典案例
var arr1 = [1, 3, 3, 3, 3, 3, 2, 2, 2, 1];
// 求arr1 数组中 出现次数最多的元素;以及出现多少次?
// 1: 数组去重
function deletArr(arr) {
// 初始化结果
var res = []; // 运算的结果,不重复的数组
// 对 形参 arr 进行去重处理
for (var i = 0; i < arr.length; i++) {
if (res.indexOf(arr[i]) === -1) {
res.push(arr[i])
}
}
return res
}
var arr = deletArr(arr1);
console.log(arr);
// 2: 将去重后数组变为对象,key 元素 value 初始为 1
function arrChangeObj(arr) {
// 初始化运算结果
var res = {};
for (var i = 0; i < arr.length; i++) {
res[arr[i]] = 1
}
return res; // 将运算结果输出到函数外部
}
var obj = arrChangeObj(arr);
console.log(obj);
// 3: 统计 对象中key 在 arr1 中出现的次数并赋值 value
for (var k in obj) {
var count = 0; // 计数器
for (var i = 0; i < arr1.length; i++) {
k = Number(k);
if (arr1[i] === k) {
count++;
obj[k] = count;
}
}
}
console.log(obj);
// 4: 求 对象中所有value 的最大值。
var maxValue = 0; // 假设最大值
var maxX = 0; // 记录key
for (var x in obj) {
if (obj[x] > maxValue) {
maxValue = obj[x];
maxX = x
}
}
// 根据value值找到对应的key
console.log(maxValue, maxX);
复制代码
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END