美文网首页
Javascript基础笔记(2)-流程控制、数组

Javascript基础笔记(2)-流程控制、数组

作者: 布拉德澈 | 来源:发表于2023-02-16 23:10 被阅读0次

流程控制主要依靠条件判断语句和循环语句完成

条件判断语句

一、if语句:

(一)语法

if结合else一起使用,表示 \color{red}{如果(满足条件) 就(执行) 否则...}
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]
}

四、数组常用方法

数组头尾操作方法

数组头尾操作方法.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()方法可以\color{red}{使数组转为字符串}
split()方法可以\color{red}{使字符串转为数组}
join()的参数表示\color{red}{以什么字符作为连接符},如果留空则默认逗号分隔。
split()的参数表示\color{red}{以什么字符拆分字符串},一般不能留空。

(八)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]);
    }
}

相关文章

网友评论

      本文标题:Javascript基础笔记(2)-流程控制、数组

      本文链接:https://www.haomeiwen.com/subject/ltvpkdtx.html