JavaScript基础(流程控制、数组基础及案例)

 1. 流程控制

1.1 顺序流程控制

按照程序员的书写先后顺序执行

1.2 if  else语句

  • 代表否定的值会被转换为 false
  • 其余的值都会被转换成 true

if  条件为 true,执行代码

if  条件为 false,结束 if 语句

let age = prompt('请输入您的年龄:')
if (age <=18){
    alert('再见,您未满18岁');
} else if (age < 60){
    alert('可正常进入网吧');
} else {
    alert('再见,老年人禁止进入网吧');
}

1.3 switch语句

  • 执行思路:利用表达式的值 和  case 后面的选项值相匹配
  • 如果 “匹配” 上了,就执行 case 里面的语句
  • 如果 “没匹配” 上,那么执行 default 里面的语句
let fruit = prompt('请输入需要查询的水果:')
switch(fruit) {
    case '苹果':
        alert('苹果的价格时3.5/斤');
        break;
    case '香蕉':
        alert('苹果的价格时4.5/斤');
        break;
    case '梨子':
        alert('苹果的价格时1.0/斤');
        break;
    default:
        alert('没有此水果');
}

注意:

  1. 我们开发中,表达式常常写成变量
  2. 我们 num 的值 和  case 里面的值相匹配时(是全等),必须是 值和数据完全一致才可以
  3. break 如果当前 case 没有 break ,则不会退出 switch, 而是继续执行下一个 case

1.4 三元表达式

  • 条件表达式 ? 表达式1 : 表达式2
  • 若 条件表达式结果为真,则返回表达式1
  • 若 条件表达式结果为假,则返回表达式2
let time = prompt('请输入一个 0~59之间的数字:');
let result = time < 10 ? '0'+time : time;
alert(result);

1.5 for 循环

  • 明确循环次数: 推荐按使用 for 循环

  • 不明确循环次数: 推荐使用 while 循环

  • 循环的中最大价值就是遍历数组

语法:

        for ( 起始值; 终止条件; 变化量 ) {

             ​ // 循环体

​        }

for (let i = 0; i <= 100; i++){
    if(i == 1){
        console.log('这个人今年出生了');
    } else if(i == 100){
        console.log('这个人今年出生了');
    } else {
        console.log('这个人今年'+i+'岁了');
    }
}
for (let i in obj) {
    // k: 属性名
    // obj[k]: 属性值
}

1.6 while 循环

  • 明确循环次数: 推荐按使用 for 循环

  • 不明确循环次数: 推荐使用 while 循环

  • 循环的中最大价值就是遍历数组

语法:

      while (条件表达式){

            //循环体

      }

  • 执行思路:当条件表达式结果为 true,则执行循环体,否则,退出循环
  • 里面应该也完成计时器更新,防止死循环
let message = prompt('你爱我吗?');
while (message !== '我爱你'){
    message = prompt('你爱我吗?')
}
// ATM 存取钱案例
<script>
        let money = 100

        // 输入操作
        while (true) {
            let a = prompt(
                `请选择您的操作:
             1. 查看余额
             2. 存款
             3. 取款
             4. 退出 `
            )

            // 增删改查
            switch (a) {
                case '1':
                    alert('余额为' + money + '元')
                    break
                case '2':
                    let im = +prompt('请输入存款金额:')
                    money += im
                    alert('存款成功')
                    break
                case '3':
                    let ex = +prompt('请输入取款金额')
                    if (ex > money) {
                        alert('取款金额大于余额')
                    } else {
                        money -= ex
                        alert('取款成功')
                    }
                    break

            }

            // 退出
            if (a === '4') {
                break
            }
        }
    </script>

1.7 do while 循环

语法:

     do {

           //循环体

      } while (条件表达式)

  • 执行思路:先执行一次循环体,再判断循环条件
  • do while  至少执行一次循环体

1.8 continue 关键字

continue 关键字:

  1.  用于立即 跳出本次循环,继续执行下一次循环
  2. 本次循环中 continue 之后的代码,会少执行一次
//求1~100之间,除了能被7整除之外的整数和
let num = 0;
for(let i = 1;i <= 100; i++){
    if(i % 7 == 0){  只要遇见continue 就退出本次循环 直接跳到i++
       continue;
    }
    num = num + i;
}
console.log(num);

1.9 break 关键字

break 关键字:

  • 用于 立即跳出整个循环(循环结束)
for(let i = 0; i <= 5; i++){
    if(i == 3){
        break;   
    }
    console.log('我正在吃第'+i+'个包子'); 
    //即打印到第3包子结束
}

2. 数组

2.1 数组的创建

  • 数组中可以存放任意类型的数据 (字符串、数字、布尔值等)
let arr = new Array ( )
let arr =  []
let arr = ['小白',12,true]

2.2 数组的遍历

  • 方式一
// 定义
let arr = ['red','green','blue'];
// 遍历
for (let i = 0; i < arr.length; i++) {
    console.log(arr[i])
}
  • 方式二
// 定义
let arr = ['red','green','blue'];
// 遍历
for (let i in arr) {
    console.log(arr[i])
}

2.3 添加、删除数组元素

添加:

  1. push()   动态的向数组的尾部添加一个元素
  2. unshift()   动态的像数组首部添加一个元素

删除:

  1. pop()   删除数组的最后一个元素
  2. shift()   删除数组第一个元素
  3. splice(从第几个开始,删除几个)  动态的删除数组的元素
 //把<2000添加到新数组
let arr = [1500, 1200, 2000, 2100, 1800];
let newArr = [];
for ( let k in arr) {
    if (arr[k] < 2000) {
        newArr.push(arr[k]); 
    }
}
console.log(newArr);

2.4 筛选数组

筛选出数组中元素大于10的元素

  • 方法一
let arr = [2,6,8,22,89,90,0,7];
let newarr = [];
let j = 0;
for (let i = 0; i < arr.length; i++) {
    if (arr[i] > 10) {
        newarr[j] = arr[i];
        j++; // 否则就会一直覆盖第一个元素
    }
}
console.log(newarr);
  • 方法二
let arr = [2,6,8,22,89,90,0,7];
let newarr = [];    // newarr.length=0
for (let i = 0; i < arr.length; i++) {
    if (arr[i] > 10) {
        newarr[newarr.length] = arr[i];
    }
}
console.log(newarr);

2.5 翻转数组

  • arr. reverse ( )     直接翻转数组
  • instanceof 运算符: 检测是否为数组     console.log(arr instanceof Array)
  • isArray(参数) : 检测是否为数组       console.log(Array.isArray(arr))
let arr = ['red','blue','yellow','green'];
let newarr = [];    
if(arr instanceof Array){  // instanceof关键字:判断arr是否为数组
    for (let i = arr.length - 1; i >= 0; i--) {
        newarr[newarr.length] = arr[i];
    }
    return newArr;
}else{
    return 'arr必须是数组'
}
console.log(newarr); 

2.6 冒泡排序

  • 冒泡排序:一次比较两个元素,如果顺序错误,则把他们交换过来
  • arr.sort()  直接冒泡排序  但元素涉及多个双位数时,会出现错误,解决办法如下:
// 解决方法
let arr = [1,13,2,77,17];
arr.sort(function(a,b) {
    return a-b;  // 升序排列
//  return b-a;  // 降序排列
});
console.log(arr);
// 冒泡排序原理
let arr = [5,4,3,2,1];
for (let i = 0; i < arr.length -1; i++) {
    for (let j = 0; j <= arr.length - 1- i; j++) {
        if (arr[j] > arr[j+1]) {
            let temp = arr[j];
            arr[j] = arr[j+1];
            arr[j+1] = temp;
        }
    }
}

2.7 数组索引的方法

方法名说明返回值
indexOf( )数组中查找给定元素的第一个索引如果存在,返回索引号;如果不存在,返回-1
lastIndexOf( )在数组中给定元素的最后一个索引如果存在,返回索引号;如果不存在,返回-1
let arr = ['yellow', 'red', 'green', 'blue','green'];
console.log(arr.indexOf('red'));   // 2
console.log(arr.indexOf('pink'));  // -1
console.log(arr.lastindexOf('green'));  // 4

2.8 数组转换成字符串

方法名说明返回值
toString( )把数组转换成字符串,逗号分隔每一项返回字符串
join('分隔符')把数组中的每一个元素转换成字符串返回字符串
concat( )连接两个或多个数组,不影响原数组返回新数组
slice(a, b )数组截取 slice(begin, end)返回被截取项目的新数组
splice( )数组删除 splice(index,要删除的个数)返回被删除项目的新数组,注意:这个会影响原数组
//工作中常用
let arr = ['白色','黑色','粉色']
console.log(arr.join('-'))
console.log(arr.join('&'))

2.9 打印三角*

 // 外层打印几行
for (let i = 1; i <= 5; i++) {
    // 里层打印几个星星
    for (let j = 1; j <= i; j++) {
        document.write('★')
    }
    document.write('<br>')

2.10 九九乘法表

css 样式

span {
    display: inline-block;
    width: 100px;
    padding: 5px 10px;
    border: 1px solid pink;
    margin: 2px;
    border-radius: 5px;
    box-shadow: 2px 2px 2px rgba(255, 192, 203, .4);
    background-color: rgba(255, 192, 203, .1);
    text-align: center;
    color: hotpink;
}

javascript

 // 外层打印几行
for (let i = 1; i <= 9; i++) {
    // 里层打印几列
    for (let j = 1; j <= i; j++) {
        // 只需要吧 ★ 换成  1 x 1 = 1   
        document.write(`
		<div> ${j} * ${i} = ${j * i} </div>
     `)
    }
    document.write('<br>')
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值