JS循环语句,集合,数组

循环

使用场景

同一个代码块,需要执行多次时,考虑用循环。

 

书写格式

while(条件){代码块}

功能:条件为真则执行大括号里的代码块,直到条件为假结束。

注:条件是可以变化的(防止死循环)

 

do{代码块}while{条件}

注:至少执行一次代码块,条件为真执行第二次,

直到条件为假,结束循环。

例如:

for(表达式1;表达式2;表达式3){

         代码块4

}

工作流程:

第一次循环:1-2-4-3;

第二次循环:2-4-3;

第三次循环:2-4-3;

第N次循环:2-4-3;

直到2不满足则停止循环。

 

数组

功能:一个标示符,存储多个数据

声明数组的方式1  (推荐)

【字面量声明】

书写格式:关键字     标识符     赋值符号    中括号    分号;

                      let        qqq         =          []        ;

赋值

注:每个值之间的分隔符是逗号;

let F70=[1,"abc",undefined,null,true];

console.log(F70,typeof F70);

 

使用数组中的值

书写格式:数组名称[下标/索引]

可以通过下标(索引),获取数组当前的值。

下标的起始值为0

因此数组中第一个值得下标为0,第二个值得下标为1,依次类推

例如:

console.log(F70[2]);//unfefined

console.log(F70[0]);//1

 

声明数组的方式2

【构造函数声明】

let F70=new Array();


字面量与构造函数的区别

1:字面量的解析效率比构造函数高

原因:

字面量属于JS0N格式,可以直接被js进行解析。

构造函数需要先调用构造函数,在进行JS引擎解析。


使用场景

解构

功能:把引用数据类型,分解成基本数据类型;

批量赋值

值的互换

例如:

let [a,b,c]=[1,,3];

console.log(a,b,c);//1,undefined,3

let [a, b]=[1,,3];

console.log(a,b,c);//1,2

let [a,,b]=[1,2,3];

console.log(a,b);//1,3

 

注:解构的左右数据类型,需要一致。

let [i,j]=123;

console.log(i,j);//报错

 

获取数组不存在值得下标,会获得undefined

let F70=[1,2,3];

console.log(F70[1]);//2

console.log(F70[100]);//undefined

 

数组的遍历

let f70=[1,2,3,4,5,6,7,8,9,10]

for(let i=0;i<f70.length;i++){

    console.log(f70[i]);

}

// 减1就是数组内的下标,下标从0开始,.length是指数组内的值得个数

let f70=[1,2,3,4,5,6,7,8,9,10]

for(let i=0;i<=f70.length-1;i++){

    console.log(f70[i]);

}


for.....of   遍历出数组中的每个值

for(let item of f70){

    console.log(item);//  a,b,c,d,f

}

 

for.....in   遍历出数组中的每个值得下标

for(let item in f70){

    console.log(item);// 0,1,2,3,4,5

}

 

【常量扩展】

如果赋值给常量的是基本数据类型、则常量存储该基本数据类型变量的具体值

 

如果赋值给常量的是引用数据类型

则常量存储该基本数据类型变量的地址

 

注:引用数据类型存储的值发生变化时,常量也会发生变化。

 

【数组的属性和方法】

数组.length(数组属性)

let(数组.length)=3;

数组增加一位

数组的方法

增加,删除,修改,查找


数组中添加内容,在开头添加多个数据

 数组名.unshift()

let f70=["a","b","c","d","f"];

f70.unshift("h","i","J");

console.log(f70);


数组中添加内容,在末尾添加多个数据

数组名.push()

let f70=["a","b","c","d","f"];

f70.push("h","i","J");

console.log(f70);


数组中删除内容,在开头删除一个数据

数组名.shift()

let f70=["a","b","c","d","f"];

f70.shift();

console.log(f70);

数组中删除内容,在末尾删除一个数据

 数组名.pop()

let f70=["a","b","c","d","f"];

f70.pop();

console.log(f70);


let f70=["a","b","c","d","f"];

// 删除最后一个值,并返回删除值

let i=f70.pop();

// 删除第一一个值,并返回删除值

let j=f70.shift();

console.log(f70);

// 输出被删除的值

console.log(j,i);


判断数组中是否存在查找的值

书写格式:

数组名.includes(查找内容);

功能查找内容存在,返回true,反之返回false.

 

数组名.slice(参数1,参数2)  批量获取数组内容

slice不会改变原数组

参数1是起始下标,参数2是结束下标;

获取的范围是从参数1开始,到参数2结束(不包含参数2)的所有内容

注:返回获取的内容,赋值给接受的变量,不会改变原数组

若参数为负数,则用数组长度与其相加。

若没有满足范围的值,返回空数组;

若参数只有1个时,则获取从这个参数到数组的最后一个值;

 

字符串转数组

运算符[扩展运算符]...

let str="123";

let f70 =[];

f70 = [...str];

console.log(f70);//[1,2,3]

 

()是添加以什么符号分割,为空则每个都为数组

let date="2020-9-9";

let arr=date.split("-");

console.log(arr);//["2020","9","9"]

 

数组转字符串

()里添加的字符串的分割符

let arr = [1,2,3];

let str = arr.join("");

console.log(str,typeof str);//123 string

 

集合

一个标示符(集合),可以存储多个数据

集合与数组的区别

集合的内容具有唯一性(全等匹配===)

 

数组去重

1.数组转集合

2.集合再转数组  [...函数名]

例如:

let f70=["a"];

f70.push(123);

f70.push(333);

f70.push(333);

console.log(f70);

 

声明集合  构造函数声明

let arr=new Set(f70);

集合赋值

arr.add(1);

arr.add(2);

arr.add(1);

arr.add("1");

console.log(arr);//1,2,"1"

 

 f70=[...arr];

console.log(f70);

 

集合的方法和属性

属性size

书写格式:集合.size

功能:输出集合存储数据的个数

let f70 =new Set([1,2,3])

console.log(f70.size);//3

 

集合的方法

链式调用

一行代码连续书写多个方法

由于add的方法返回的值时集合,因此可以在add后边继续添加add;

f70.add("a").add("b").add("c");

let f72 =f70.add("a");

console.log(f72);//1.2.3.a.b.c

console.log(f70);//1.2.3.a.b.c

 

集合的删除

集合名.delete(加要删除的内容)

let f73=f70.delete("a");

console.log(f70);//1,2,3,b,c

 

集合的键值对(键值就是键名)

清空集合

f70.clear();

console.log(f70); //

 

查找

查找集合内有没有查找的单位,有的话返回ture,没有的话返回false;

console.log(f70.has(1));//true;

 

for(let item of f70.keys()){//键名

    console.log(item);

}

 

for(let item of f70.values()){//键值

    console.log(item);

}

 

for(let item of f70.entries()){//输出键名,键值以数组方式

    console.log(item);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值