基础很重要,万丈高楼平地起,继续整理复盘
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);