js的使用与使用for循环做一个冒泡排序

332 阅读3分钟
1、变量的命名与使用
//let 自定义的变量名

    let age
    
// 赋值符号  =
    
    age = 18

//赋值多个需要用逗号隔开

	 let a = 1,
         b = 2
//重新赋值会覆盖前面的值
     
        a = 3 

//赋值不允许重名,必须先赋值再使用

let a = 1
let a = 2 

//赋值可以重名,但是后者会覆盖前者,可以先使用再声明

console.log(a)
ver a = 1
ver a = 2 

2、变量赋值,与几个常见的输入和输出语法
   //弹出输入框,让用户输入信息用一个变量名装起来
   let userName = prompt('请输入您的名字')
   let age = prompt('请输入您的年龄')
   let sex = prompt('请输入您的性别')
   //console.log()把已经赋值好的变量名打印在控制台
        console.log(userName, age, sex);
   //alert()警示框将其打印,用反引号包裹起来,然后$()包裹变量名
        alert(`这是一个警示框${userName}, ${age},${sex}`)
   //直接到html文档输出
        document.write(userName, age, sex)
3、5种基础数据类型

let a = 1 //为数字型 Infinity -Infinity为无穷大,无穷小,本质上也属于数字型
let b = '1' // 为字符串类型,用双引号,单引号,反引号包裹的
//数字也是字符串类型
let c = truefalse //布尔型只有两个值 一个为true代表真的,一个false代表假的,常用于进行判断真假值
let d = undefined // 说明变量尚未赋值。一般出现后需要查找原因
let e = null //变量已经赋值,但是值为空
4、转换数据类型
let num1 = prompt('请输入第一个数字')
let num2 = prompt('请输入第二个数字')
document.write(`和为${num1 + num2}`)
//这样书写为错误示范,会造成字符串的拼接,字符串使用+号会输出为
//10 + 10 =1010
//注意字符串与数字相加,会隐性转换成字符串
//数字相加时为避免出错应该转化为数字
let num1 = +prompt('请输入第一个数字')//在数据前加+号让其转换成数字型
let num2 = +prompt('请输入第二个数字')
document.write(`和为${num1 + num2}`)
//这样输入的结果才是10+10=20


//转换的几种类型

//Number()转成数字型,但是比较苛刻主要数字中含有非数字返回NaN
	 console.log(Number('1234acs'))//返回NaN

// parseInt() 转换为数字型,只保留整数,没有四舍五入,数字后面的小数或者非数字直接无视,但是不能以非数字开头否则返回NaN
 console.log(Number('1234acs'))//返回1234

// parseFloat() 转换为数字型,会保留小数,但是不能以非数字开头否则返回NaN
 console.log(Number('1234.123'))//返回1234.123

//NaN这不是一个数字,但是本质上NaN属于数字类型


//String转换成字符串类型
console.log(String(1234.123))//输出结果为'1234.123'

5、算法运算符,比较运算符
console.log(1 + 2) // 3,如果其中有一个是字符串类型会进行拼接
console.log(1 - 2) // -1
console.log(3 * 9); // 27
console.log(9 / 3); // 3
//其他运算符,就算有字符串类型,也会转换成数字型
console.log(10 % 3)//结果为1,运算符号余%,一个数除以另一个数的余值

//比较运算符 >, <,=>,=<, ==, ===(全等), !==(全不等),  其中注意单等于号为赋值符号,

//逻辑运算符,&&(且)一假全假,||(或)一真全真,!反转,真变假,假变真
console.log(true && true);  // true
console.log(true && false);  // false
console.log(true || false);  // true
console.log(false || false);  // false
console.log(!true);  // false
console.log(!false);  // true
6、分支语句
//分支语句if,else,如果满足if(条件)条件则执行,不满足则执行else,需要其他的分支,用else if(条件)
let time = +prompt('请您输入现在几点了')
if (time < 12) {
alert('上午好')
} else if (time < 18) {
alert('下午好')
} else if (time < 20) {
alert('晚上好')
} else {
alert('早点睡吧~')
}

//三元表达式,一般用于简单的判断
  console.log(5 > 3 ? 5 : 3);
//意思为5大于3吗,大于执行后面的第一个条件,否则执行后面的条件,两个条件用:分隔


//switch语句
let num = +prompt(输入数字)
 switch (num) {
            case 1:
                console.log('您输入的是1');
                break;
            case 2:
                console.log('您输入的是2');
                break;
            default:
                console.log('您输入的内容有误,请重新输入');
                break;
 				}
//switch(判断的元素)如果值满足哪个case 条件,则执行哪个case,如果都不满足则执行default,break防止代码穿透

7、循环的使用
	// while循环,一般用于判比较固定的条件使用,while(判断条件,满足则继续执行,不满足停止)
        let i = 1
        while (i <= 10) {
            i++
        }

// for 循环
// for (起始条件; 循环条件; 变化量) {
//     循环体
// }
 for (let i = 1; i <= 10; i++) {
            document.write(i)
            document.write('<br>')
        }
//for的嵌套循环,外循环意思为我记录我过了多少天,内循环意思为我一天得过花多少个小时去学代码
//下为99乘法表的案例
for (let i = 1; i <= 9; i++) 
{
for (let j = 1; j <= i; j++) 
{
document.write(`<div>${j} x ${i} = ${i * j}</div>`)
            }
document.write(`<br>`)
        }

8、用循环做数组的遍历

//因为需要使用数组里每一项,需要循环遍历,数组的索引是从0开始的
//a[0]=数组的第一项
let a = [1, 2, 3]
        for (let i = 0; i < a.length; i++) {
            num += a[i] 
        }
//num打印的结果为6,因为每次循环a[i]会变成a[0]到a[1]····i的数值会从0到1
//然后在a.length,a的数组长度不大于i之前循环停止,然后用一个num收集每次a[i]循环的值 最后能得到一个数组相加的和

9、数组内容的删除添加

//pop() 从数组中删除最后一个元素,并返回删除元素的值
let arr = ['狗蛋', '翠花', '铁柱']
console.log(arr.pop())//返回的是铁柱
console.log(arr)//数组里面['狗蛋', '翠花']

// shift() 从数组中删除第一个元素,并返回删除元素的值
let arr = ['狗蛋', '翠花', '铁柱']
console.log(arr.shift())//返回的是狗蛋
console.log(arr)//数组里面['翠花', '铁柱']

        // splice(起始索引, 删除几个元素)  删除几个元素的值如果不写则代表从起始位置删到最后,索引是从0开始
let arr = ['狗蛋', '翠花', '铁柱']
console.log(arr.splice(1,2));//返回的是被删除的元素的数组
console.log(arr)//此时只有一个狗蛋



//数组添加元素
// push()在数组最后添加元素,返回数组长度,并且可以添加多个内容,用逗号分隔
let arr = ['red', 'green']
let res = arr.push('blue', 'orange')
console.log(arr);//返回['red', 'green','blue', 'orange']
console.log(res);//返回数组新长度


//unshift()数组前面添加元素,返回数组长度,并且可以添加多个内容,用逗号分隔
let arr = ['red', 'green']
let res = arr.unshift('blue', 'orange')
console.log(arr);//返回['blue', 'orange','red', 'green']
console.log(res);//返回数组新长度

8、使用for循环,做一个冒泡排序
//冒泡排序
let arr = [5, 4, 3, 2, 1]
for (let i = 1; i <= arr.length - 1; i++) {
document.write(`这是第${i}轮的交换`)
// 内层循环?次 + 当前的轮次 = 数组的长度
// 内层循环?次 = 数组的长度 - 当前的轮次
// 内层循环?次 = arr.length - i

for (let j = 1; j <= arr.length - i; j++) {
   //判断条件
if (arr[j - 1] > arr[j]) {
    //使用一个临时容器去装比较较大出来的值
let temp = arr[j - 1]
	//把较小的值赋予给另一个已经空出来的变量名
arr[j - 1] = arr[j]
    // 把临时容器里的较大值赋予给较小值
arr[j] = temp
    //最终的白话意思就是替换两个值的位置
                }
            }
        }
console.log(arr);