js整理(2)

81 阅读6分钟

基础很重要,万丈高楼平地起,继续整理复盘

1.1.三目运算符

条件运算符:(expr1) ? (expr2) : (expr3) expr1的结果为true时,执行expr2,结果为false,执行expr3

1.2.逻辑运算符

a&&b(并且): 逻辑与,当a和b都为true时,返回值为true,否则返回false。

a||b(或者):逻辑或,当a和b都为false时,返回false,有一个为true,则返回true

!a(取反) :逻辑非,当a为true时,返回值为false,否则返回true。!逻辑非; !!表达式可以将任何数据类型转换为布尔值;

1.3.字符串连接符号(+)

一个表达式中,字符串与任何变量进行“+”运算,都是进行字符串连接,运算结果为一个新的字符串。

1.4.赋值运算符

=:赋值运算符

+=:  a+=b    a=a+b;

-=:   a-=b    a=a-b;

/=:   a/=b    a=a/b;

%=:   a%=b    a=a%b;

2.流程控制

2.1 条件分支语句

(1)if语句 单分支if 双分支 if else 多分支 if else if else

(2)switch语句

switch(表达式){

case 表达式1:

    语句1;

    break;

case 表达式2:

    语句2; ...

    break;

case 表达式n:

    语句n;

    break;
default:

    语句n+1;

    break;

}

switch特点:1.switch之后必须是case或者是default 2. break可以不要,但是后面的case就不在判断,直到遇到break或者switch语句执行完毕才结束 3. default可以出现在switch的任何位置.但还是其他没有匹配上才执行default;

if语句和switch语句比较

switch是状态分支语句,switch中的状态值和case后的值作比较,成立才执行

if是条件分支,值判断if中的条件,条件中可以是范围.

if中条件可以是一个范围;

switch条件只能某个值判断;

2.2循环语句

循环语句可以用于反复执行一段代码

(1)for循环

for(初始化循环变量表达式; 循环条件判定表达式; 循环变量更新表达式){
    循环体
}
初始化循环变量表达式:记录循环的次数;
循环条件判定表达式:判断是否执行循环,只有条件满足才进行循环;
循环变量更新表达式:修改条件表达式中的变量;
循环体:需要多次执行的语句;

(2)while循环

while(条件表达式){
    循环体语句
}
while:循环执行代码,如果while()条件表达式为真,将执行while花括号{}中的语句,直到条件不为真时,才会终止while运行。

(3)do while循环

do{
    循环体
}while(条件表达式);
dowhile循环语句与while类似,在对条件表达式求值之前,循环体内的代码至少会被执行一次。

终止循环语句 break : 跳出当前循环 continue : 终止本次循环,继续下次循环.

4.函数

函数是对一段功能代码的封装,当某一功能代码需要重复使用时,可以通过对其进行函数封装,在需要使用的地方再进行调用,实现代码复用。

函数返回值

所有函数都有返回值,没有return语句时,默认返回内容为undefined

注意:函数第一次遇到return就结束执行,不管return后面还有多少代码都不执行

5.作用域

作用域:标识符能够访问到的范围,分为2种情况,全局作用域和函数作用域 全局变量的特殊形式:在函数内定义但是没有加var、let、const声明,也被作为全局变量使用。

6.数组

删除数组中的元素:delete  数组名【索引】 ,相当于给当前数组元素赋值为undefined,数组长度不变 清空数组:数组名.length=0;数组名=[]

数组循环方法: (1)for循环

        let a=[1,2,3,4,5]
        for(let i=0;i<a.length;i++){
            console.log(a[i]);
        }

(2)forEach

    let arr=[1,2,3,4,5]
            arr.forEach((e,i)=> {
                //e 数组的每一个元素值
                //i 数组索引
                console.log(e);
            });

数组常用方法:

(1)数组合并:arr.concat(arr1,...)

array1.concat(array2, array3, ..., arrayX)
方法不会更改现有数组,而是返回一个新数组,其中包含已连接数组的值。

(2)删除数组元素 1)arr.pop()

 let arr=[1,33,55,22,66,999,123]
            console.log(arr.pop());   //123
            删除并返回数组的最后一个元素

2)arr.shift()

   shift() 方法用于把数组的第一个元素从其中删除,并返回第一个元素的值。

(2)添加数组元素 1)arr.push()

    向数组的末尾添加一个或更多元素,并返回新的长度。

2)arr.unshift()

unshift() 方法可向数组的开头添加一个或更多元素,并返回新的长度。

(3)数组筛选 arr.slice(start,end)

    slice() 方法可从已有的数组中返回选定的元素。
    参数说明
    start:必需。规定从何处开始选取。如果是负数,那么它规定从数组尾部开始算起的位置。也就是说,-1 指最后一个元素,-2 指倒数第二个元素,以此类推。
    end:可选。规定从何处结束选取。该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。如果这个参数是负数,那么它规定的是从数组尾部开始算起的元素。

(4)数组增加、修改:arr.splice(start, deleteCount, item1, item2, itemN)

splice(start, deleteCount, item1, item2, itemN)
参数说明
start
指定修改的开始位置(从 0 计数)。如果超出了数组的长度,则从数组末尾开始添加内容;如果是负值,则表示从数组末位开始的第几位(从 -1 计数,这意味着 -n 是倒数第 n 个元素并且等价于 `array.length-n`);如果负数的绝对值大于数组的长度,则表示开始位置为第 0 位。
deleteCount:可选
整数,表示要移除的数组元素的个数。如果 deleteCount大于 start之后的元素的总数,则从start后面的元素都将被删除(含第start位),如果 `deleteCount` 是 0 或者负数,则不移除元素
item1, item2, ...:可选
要添加进数组的元素,从`start` 位置开始。如果不指定,则splice()将只删除数组元素。

返回值:由被删除的元素组成的一个数组。如果只删除了一个元素,则返回只包含一个元素的数组。如果没有删除元素,则返回空数组。

(5)数组去重

1)利用ES6 Set去重

    let arr=[11,11,22,33,22,44,44,55]
    console.log( Array.from(new Set(arr)));

2)利用for嵌套for,然后splice去重

        let arr=[11,11,22,33,22,44,44,55]
        for(let i=0;i<arr.length;i++){
            for(let j=i+1;j<arr.length;j++){
                if(arr[i]===arr[j]){
                    arr.splice(j,1)
                    j--
                }
            }
        }
        console.log(arr);

3)利用indexOf去重

        let arr=[11,11,22,33,22,44,44,55]
        let arry=[]
        for(let i=0;i<arr.length;i++){
            if(arry.indexOf(arr[i])===-1){
                arry.push(arr[i])
            }
        }
        console.log(arry);

4)利用includes

        let arr=[11,11,22,33,22,44,44,55]
        let arry=[]
        for(let i=0;i<arr.length;i++){
            if(!arry.includes(arr[i])){
                arry.push(arr[i])
            }
        }
        console.log(arry);

5)利用filter

        let arr=[11,11,22,33,22,44,44,55]
        let arry=arr.filter((item,index,arr)=>{
            return arr.indexOf(item,0)===index
        })
        console.log(arry);

(6)数组元素排序:sort

        let arr=[12,31,9,8]
        arr.sort((a,b)=>{
            return b-a  //降序  [31, 12, 9, 8]
        }) 
        console.log(arr);
        
        let arr=[12,31,9,8]
        arr.sort((a,b)=>{
            return a-b  //升序   [8, 9, 12, 31]
        }) 
        console.log(arr);