一.循环嵌套
1.循环嵌套的执行逻辑
// 外层循环 循环1次,
for (let j = 1; j <= 10; j++) {
str += '<tr>';
// 内层循环 内层循环循环一周。
for (let i = 1; i <= 10; i++) {
str += '<td></td>'
}
str += '</tr>';
}
for里嵌套着for,外层循环执行一次,内层循环执行一周。
二.逻辑运算符扩展
1.逻辑短路
JS设计者设计的与逻辑&& ||的一种规则。
逻辑与
let a = 10;
let ret = false && ++a;
console.log(a);
/*
逻辑与短路:
根据逻辑与的口诀,找假
左侧为false,右侧主没有必再进行一次运算,所以右侧++a没有被计算,相当于被短路。
*/
逻辑或
let b = 10;
let ret1 = true || ++b;
console.log(b);
/*
逻辑或短路:
根据逻辑或的口诀,找真
左侧为true,右侧主没有必再进行一次运算,所以右侧++b没有被计算,相当于被短路。
*/
三.数组
1.数组的定义
01.数组是一数组数据有序的集合,[值,值,值,...]
三要素:
元素:数组中的每一个数据就是一个元素,元素可以是任何类型
下标:下标就是元素的序号,编号从0开始,
长度:数组中的元素的个数就是长度 数组.length
2.数组头尾元素的添加与删除
// 0 1 2
let arr = [10, 20, 30];
// 通过下标来添加元素
arr[3]=40;
arr[10]=60;
alert(arr);
*/
1.添加:
数组.push(数据) 在数组尾部追加
数组.unshift(数据) 在数组头部添加
2.删除:
数组.pop() 删除数组尾部的元素
数组.shift() 删除数组头部的元素
3.数组中间元素的删除与添加
let arr = [10, 20, 30, 40, 50,60, 70,80,90,100,110];
// 数组名.splice(起始下标,删除个数,新元素,新元素...)
// 从 起始下标 开始,删除指定个数的元素,还可以在被删除的位置插入新的元素
// arr.splice(1,2);
// arr.splice(1); 如只是输入一个数,则后面的都删除
// arr.splice(1,2,'a','b','c','d');
arr.splice(1,0,'a','b','c','d');
console.log(arr);
4.数组的遍历
// 遍历:由于某个需求,需在对数组中的每个元素都要访问一次。
// i 0 1 2 3 4 5
let arr = ['zhangsan', 'lisi', 'wagnwu', 'zhaoliu', 'qianqi', 20, ];
// 使用for循环的控制变量来模拟数组的下标
for(let i=0;i < arr.length ;i++){
// console.log(i);
// 将循环控制变量作为数组的下标
console.log(arr[i]);
}
5.数组元素求和
let arr = [98, 87, 92, 80, 91, 100];
let sum = 0;
for(let i=0; i< arr.length; i++){
// sum = sum + arr[i]; // += -= *= /=
sum += arr[i];
}
console.log(sum);
6.数组元素的筛选
// 将数组中大于10的元素筛选出来,保存到一个新的数组中。
let arr = [5, 12, 8, 11, 9, 15, 20];
let nArr = [];
for(let i=0; i< arr.length;i++){
if(arr[i] > 10){
// console.log(arr[i]);
nArr.push(arr[i])
}
}
console.log(nArr);
7.查找元素的下标
let arr = ['zhangsan', 'lisi', 'wangwu', 'zhaoliu', 'qianqi','wangwu']
// 查找 wangwu 的下标
let target = 'wangwu'
for(let i=0;i<arr.length;i++){
if(arr[i] == target){
console.log(`与${target}相同的元素的下标是${i}`);
}
}
8.数组坍塌
// 将元素0删除掉
// 0 1 2 3 4 5 6 7 8 9
let arr = [5, 12,0, 8, 11,0, 0, 0, 9, 0, 15, 20,];
for(let i=arr.length-1;i>=0;i--){
if(arr[i] == 0){
// console.log(i);
arr.splice(i,1)
}
}
console.log(arr);
四.循环结构-while循环
1.while循环语法及逻辑
/*
while语法:
while(表达式){
循环体
}
不确定范围的情况下使用
执行逻辑:
先判断表达式是否成立,如果不成立就直接跳过while结构,继续后面的代码执行。
如果成立就执行循环体。循环体执行结后再来判断表达式是否成立
依此规律循环往复的执行,直到表达不成立(或提前退出)
*/
// while循环就是for循环的一个变形
let i=1;
while(i<=10){
console.log(i);
i++;
}
2.break与continue
break与continue是用于在循环内,控制循环的。
// break直接结束循环
for(let i=1;i<10;i++){
if(i% 3==0){
break;
console.log('hello');
}
console.log(i);
// continue结束本次循环里continue后面的代码,继续下一次循环
for(let i=1;i<10;i++){
//....
if(i% 3==0){
continue;
console.log('hello');
}
//..
console.log(i);
}
3.while与for循环的区别
for循环是根据次数循环,循环次数已知
while循环是根据条件进行循环,循环次数未知