流程控制主要依靠条件判断语句和循环语句完成
条件判断语句
一、if语句:
(一)语法
if结合else一起使用,表示
if(条件){ 满足条件执行语句1 } else { 不满足条件执行语句2 }
//示例:判断用户输入的整数是偶数还是奇数
<script>
var a = Number(prompt('请输入一个整数'))
if (a % 2 == 0) {
alert(a+"这是一个偶数")
} else {
alert(a+"这是一个奇数")
}
</script>
-
if语句执行流程图
if语句执行流程.png
(二)if(){...}else if(){...}else{ } 多条件分支
<script>
let score = Number(prompt('请输入一个成绩'))
if (score > 100 || score < 0) {
alert("你的输入无效")
} else if (score >= 85) {
alert(score + "分,优秀")
} else if (score >= 70) {
alert(score + "分,良好")
} else if (score >= 60 ) {
alert(score + "分,及格")
} else {
alert(score + "分,不及格")
}
</script>
二、switch语句
用于一个变量被分类讨论的情形。
//switch用法
//用户输入1-12中任意一数字,显示这个月份的天数
let month = Number(prompt("请输入1-12任意一数字")); //es6变量定义关键字 let
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
alert(`你输入的是${month}月,这月有31天`); //ES6: 模板字符串 `${变量}`
break;
case 4:
case 6:
case 9:
case 1:
alert(`你输入的是${month}月,这月有30天`);
break;
case 2:
alert(`你输入的是${month}月,这月有28或29天`);
break;
default:
alert("请输入1-12中任意一个数")
}
三 、三元运算符
条件表达式 ? 表达式1 : 表达式2
问号前面是判断的条件,问号后面用冒号隔开两个表单式。当条件表达式为真时调用表达式1,为假时调用表达式2。
let age = Number(prompt("请输入你年龄:"))
age >= 18 ? alert('你已经成年!') : alert('你未成年');
循环语句
一、for循环
语法:
for(var i=1;i<10;i++) {console.log(i); }
表达式var i=1
; 定义一个循环变量i
,并赋初值为1
表达式i<=10
,表示循环执行条件,条件为真,则会一直执行。
表达式i<++
,更新循环变量,直到循环变量达到循环条件结束。
循环顺序:
- ① 执行语句
var i =1
; - ②判断
i<10
是否满足,如果满足则进入循环体,执行console.log(i)
; - ③如果不满足,则退出循环;
- ④语句体重的语句执行完毕,执行
i++
; - ⑤如此循环,直至达到循环条件,结束循环。
二、while循环
定义和用法:
while(测试条件){ 执行循环体 }
while 语句只要指定条件为 true,就会执行循环。
只要指定条件为 true,循环就可以一直执行代码。
- JavaScript 支持不同类型的循环:
- while - 当指定的条件为 true 时循环指定的代码块
- do/while - 同样当指定的条件为 true 时循环指定的代码块,但该语句会在条件判断前先执行一次
提示: 使用 break 语句来跳出循环,使用continue 语句用于跳出当前的迭代,并开始下一次迭代。
break
:表示立即终止循环。
continue
用户跳过循环中的一个迭代,并继续执行循环中的下一个迭代。
三、do-while循环
do-while
循环是 while 循环的变体。该循环会执行一次代码块,在检查条件是否为真之前,然后如果条件为真的话,就会重复这个循环。
//基本语法
do{
循环体
}while(循环执行条件)
数组
一、数组的概念
数组(Array)是一种特殊的变量,它能够一次存放一个以上的值。
二、定义数组
- (一)方法1:
var arr = [1,2,3,4,5];
- (二)方法2:
var arr =new Array('A','B','c','d','E');
- (三)方法3:
var arr =new Array(4);
//定义一个长度为4的数组。
三、访问数组项
数组每一项都有下标,从0开始。
var arr = [1,2,3,4,5];
console.log(arr[0]); //1
console.log(arr[1]); //2
下标越界:javascript规定,访问数组中不存在的项会返回undefined,不会报错
- (一)数组的长度
数组length属性表示它的长度 。 - (二)更改数组项
数组的项时可以修改的。 通过下表赋值即可。
如果赋值超出数组下标项,js自动填空,扩展数组。 - (三)数组遍历
数组最后一项的下标是数组的长度减1。 - (四)数组类型
数组用typeof检测结果时object。
Array.isArray()方法可以用来检测数组
//数组定义示例:
//数组定义方法1
var arr1 = [22, 33, 44, 55, 66]
console.log(arr1.length) //数组长度为5
//数组定义方法2
var arr2 = new Array('brad', 'jack', 'messi')
for (var i = 0; i <= arr2.length - 1; i++) {
console.log(arr2[i]); //brad、jack、messi 遍历数组,循环次数为数组的长度减1
//数组定义方法3
var arr3 = new Array(2)
console.log(arr3); //(2) […] 长度为2的空数组
// 给数组项赋值
arr3[0]= 1;
arr3[1]=2;
console.log(arr3); //(2) [1, 2]
}
四、数组常用方法
数组头尾操作方法
![](https://img.haomeiwen.com/i14061973/879401c6de7d2b0a.png)
(一)push() 方法
push()
方法用来在数组末尾推入新项,参数就是要推入的项。如果要推入多项,用逗号隔开。
var testArr = [];
testArr.push(11, 22, 33, 44)
console.log(testArr); // (4) [11, 22, 33, 44]
(二)pop() 方法
pop()
方法与push()
相反,用来删除数组中的最后一项。该方法不仅会删除数组末项,还会返回被删除的项。
var testArr = [11, 22, 33, 44];
var delData = testArr.pop()
console.log(testArr); // (3) [11, 22, 33]
console.log(delData); //44
(三)unshift() 方法
unshift()
方法在数组头部插入新项,参数就是要插入的项。如果要插入多项,可以用逗号隔开。
调用unshift()
方法,数组会立即改变,不需要赋值。
(四) shift() 方法
与
unshift()
方法相反,shift()
方法用来删除数组中下表为0的项。
(五) splice() 方法
splice()
方法用于替换数组中的指定项。
var testArr = ['A', 'B', 'C', 'D', 'E', 'F', 'G'];
testArr.splice(3, 2, 'x', 'y', 'z');
console.log(testArr); //(8) ['A', 'B', 'C', 'x', 'y', 'z', 'F', 'G']
splice()
方法还可以用于在指定位置插入指定项。
testArr.splice(3, 0, 'x', 'y', 'z');
//将第二数字修改为0,即在下标为3的项后面插入指定数据项,不替换原有数据项。
var testArr = ['A', 'B', 'C',];
testArr.splice(1, 0, 'x', 'y', 'z');
console.log(testArr); //(6) ['A', 'x', 'y', 'z', 'B', 'C']
splice()
方法还可以用于删除指定项。
testArr.splice(2, 3 );
//不设置替换新项,从下标为2的项开始,删除3项。
(六)slice() 方法
slice()
方法用于得到子数组。slice(a,b)
截取的子数组从下表为a的项开始,到下标为b(但不包括下表为b)的项结束。
slice()
方法不会更改原有数组。
slice()
如果不提供第二个参数,则表示从指定项开始,提取后续所有项作为子数组。
slice()
允许参数为负数,表示从数组的末尾倒数第几项。
(七)join()方法和split()方法
join()
方法可以。
split()
方法可以。
join()
的参数表示,如果留空则默认逗号分隔。
split()
的参数表示,一般不能留空。
(八)concat()方法
concat()
方法可以合并连接多个数组,该方法不会改变原数组。
var arr1 = [1,2,3,4];
var arr2 = ['A','B','C','D'];
var arr3 = [5,'e',6,'f'];
var arr = arr1.concat(arr2,arr3);
console.log(arr); //(12) [1, 2, 3, 4, 'A', 'B', 'C', 'D', 5, 'e', 6, 'f']
(九)reverse()方法
reverse()
方法将一个数组中的全部项顺序置反。
var arr = ['A','B','C','D','E'];
arr.reverse();
console.log(arr); //(5) ['E', 'D', 'C', 'B', 'A']
(十)indexOf()方法和 includes()方法
indexOf()
方法用于搜索数组中的元素,并返回它所在的位置,如果元素不存在,则返回-1.
includes()
方法判断一个数组是否包含一个指定的值,返回布尔值。
五、数组的遍历
1.求数组中每一项的综合、平均数
//求数组中每一项的总和、平均数
var scoreArr = [3, 2, 1, 4, 8, 5, 7, 6];
var sum = 0;
for (var i = 0; i <= scoreArr.length - 1; i++) {
sum += scoreArr[i];
}
//平均数
var average = sum / scoreArr.length;
console.log(`scoreArr数组总和是${sum},平均数是${average}`)
2.数组去重:去掉数组中的重复项
//数组去重
var scoreArr = [3, 2, 1, 4, 1, 3, 7, 2, 4, 9];
var cacheArr = [];
for (var i = 0; i < scoreArr.length; i++) {
if (!cacheArr.includes(scoreArr[i])) {
cacheArr.push(scoreArr[i])
}
}
console.log(cacheArr);
2.冒泡排序
var arr = [13, 32, 1, 94, 21, 63, 79, 2, 4, 19];
for (var i = 0; i < arr.length - 1; i++) {
for (var j = arr.length - 1; j >= i; j--) {
if (arr[j] > arr[j - 1]) {
var cacheArr = arr[j];
arr[j] = arr[j - 1];
arr[j - 1] = cacheArr;
}
}
}
console.log(arr);
六、二维数组
数组的数组,可以看着矩阵
var matrix = [[1, 2, 3], [4, 5, 6], [11, 22, 33], [44, 55, 66]];
console.log(matrix.length); //4
//遍历这个数组
for (var i = 0; i < 4; i++) {
for (j = 0; j < 3; j++) {
console.log(matrix[i][j]);
}
}
网友评论