Js数据类型-数组

数组介绍

在Java Script语言中(以下简称Js),数据类型分为基础(简单)数据类型和引用(复杂)数据类型,其中我们常用的一种引用数据类型-数组,接下来我们一起来看看数组的一些基本知识。

数组基础

数组(Array),是大多数计算机语言里常见的数据结构,同时也是JS中最常见的数据结构之一,数组的重要性不言而喻。数组是一个有序的数据的集合。在Js中,数组的各个值成为数组的元素,Js中数组的特点是同一数组中元素可以是任意类型(Js是弱类型语言),不过通常我们在同一数组中只保存同一种数据类型的值;数组中的元素个数称为数组的长度(length),长度为0的数组叫空数组,数组中的每一个元素都有可以通过一个数字来访问,被称为索引(或称下标),数组索引从0开始,所以数组中最后一个元素的索引应该是数组的长度一。

数组创建

创建数组的方式大致可以分为面量创建数组和使用构造函数创建数组两种方式。
1、字面量创建:

let arr=[];

2、构造函数方式:

let arr=new Array();

数组赋值

给数组赋值的方法非常简单,可以分为先声明再赋值和声明时直接赋值:
先声明再赋值:

let arr = [];
arr[0] = 1;
Arr [1] = 2;

声明时直接赋值:

let arr = -[3 ,4];
let arr1 = new Array(3,4);

我们可以在数组的任意位置进行赋值,致组的长度会自动改变,空的位置使用由于不存在,可以认为全部是 undefined。

访问数组元素(查)

通过数组的索引(下标),我们可以轻松的访问到存储在数组里面的元素,如下:

let arr = [1,2,3,4,5];
console.log(arr[0]): //1

再次强调:数组里面的第一个元素是从下标0 开始的。

删除元素(删)

我们可以使用delete运算符来删除数组中的某一个元素,示例如下:

let arr = [1,2,3,4,5];
delete arr[2]//删除数组中的第3个元素
console.log(arr);//[ 1, 2, <1 empty item>, 4, 5 ]

当然这种方法我们可以说非常少见,后续会讲到听过splice来删除数组元素。

数组的长度

数组的长度,即数组内保存的数据的条数Js中为数组提供了一个length属性,用来设置或返回数组的长度。
语法:数组名.length
例:

let arr = [1,2,3,4,5];
console.log(arr.length);//输出数组的长度5

我们可以通过强制设置数组长度来删除数组的后面元素或者全部元素
例:

let arr = [1,2,3,4,5];
arr.length=2;
console.log(arr);//输出arr数组目前的所有元素[ 1, 2 ];
arr.length=0;
console.log(arr);//删除后arr的内容清空,变为空数组

数组的遍历

数组的作用是可以批量保存多条数据,但是当我们需要对数据进行操作时,并不能通过直接操作数组来实现效果,还是需要将每一条数据从数组中取出来,然后再依次取对其进行操作。我们常用的数组遍历方法如下:
1、for循环,利用循环来遍历数组每一项元素
例、

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

2、利用for-of循环和for-in循环:
ES6中新增了一种遍历数组的方法for-of,相比起/or循环来说它的代码更加简洁。
例、

let arr = [1,2,3,4,5];
for(let i of arr){//i就代表数组的一项
    console.log(i);
}

除此之外我们还可以利用for-in遍历数组下标的方式遍历得到数组每一项元素:
例、

let arr = [1,2,3,4,5];
for(let i in arr){//i代表数组的下标(索引)
    console.log(arr[i]);
}

数组的常用方法

数组包含了很多用于操作数组的方法。这里主要介绍一些比较常用的方法:
1、删除数据,分为从最开始删除和最末未删除:
从开始删除:

let arr = [1,2,3,4,5];
arr.shift();
console.log(arr);//输出arr数组目前删除元素后的数组[ 2, 3, 4, 5 ]

从后面删除:

let arr = [1,2,3,4,5];
arr.pop();
console.log(arr);//输出arr数组目前删除元素后的数组[ 1, 2, 3, 4 ]

2、增加数据,分为从最开始增加和最末未增加:
从末尾增加

let arr = [1,2,3,4,5];
arr.push(6);
console.log(arr);//输出arr数组目前增加元素后的数组[ 1, 2, 3, 4, 5, 6 ]

从开始增加

let arr = [1,2,3,4,5];
arr.unshift(6);
console.log(arr);//输出arr数组目前增加元素后的数组[ 6, 1, 2, 3, 4, 5 ]

Js中提供了一个万能方法,用于对数组任意位置的数据进行增加或删除,语法结构如下:
数组名.splice(下标,删除个数,新增致据1,新增数据2)
注:新增数据可以是任意个数,包括0,如果不需要删除数据只需要添加,则删除个数写0即可:

let arr = [1,2,3,4,5];
arr.splice(1,1);//下标为1的位置删除一个数并且不添加元素
console.log(arr);//输出arr数组目前删除元素后的数组[ 1, 3, 4, 5 ]

查找数据

查找一条数据的下标,常用方法:
indexOf查找致据第一次出现的下标;
lastlndex0f():查找数据最后一次出现的下标:
如果在数组中找到对应的值则返回对应得下标,并且立即停止查找,如果数组中不存在改数据则返回-1;
例、

let arr = [1,2,3,4,5];
console.log(arr.indexOf(2));//输出元素在数组中的下标 1
console.log(arr.lastIndexOf(2));//输出元素在最后一次出现在数组中的下标 1
console.log(arr.indexOf(20));//元素不存在,返回 -1

查找一条数据是否存在的另一种方法includes(),通过返回值是true还是false来判断是否存在:
例、

let arr = [1,2,3,4,5];
console.log(arr.includes(20));//false 不存在
console.log(arr.includes(1));//true 存在

注:由于NaN不等于任何数包括它自身,因此查询数组中是否存在NaN就需要用includes方法,不能用indexOf和lastIndexOf方法。
查找部分数据是否存在:
Js中提供了slice 方法用来查找数组中的一部分数据,并将找到的数据组成一个新数组。
数组名.slice(起始位置下标,结束位置下标),slice用来查找从起始位置到结束位置(不包含) 之间的所有数据。

let arr = [1,2,3,4,5];
console.log(arr.slice(2,4));//查找数组中下标为2到下标为4(不包括)之间的数据并返回 得到新数组 [ 3, 4 ]

数据排序

Js中提供了一组方法,用于操作数组内所有数据的顺序。
reverse:将所有数据顺序颠倒(注意事项顺序颠倒并非倒序输出);
例、

let arr = [6, 2, 8, 1, 5];
console.log(arr.reverse());//点到顺序并返回新数组 [ 5, 1, 8, 2, 6 ]

sort:根据给定条件对所有数据进行排序;
例、

let arr = [6, 2, 8, 1, 5];
console.log(arr.sort((a, b) => a - b)); //升序排序并返回新数组 [ 1, 2, 5, 6, 8 ]
console.log(arr.sort((a, b) => b - a)); //降序排序并返回新数组 [ 8, 6, 5, 2, 1 ]

数组和字符串转换

Js中提供了用户数组和字符串之间的相互转换的方法split(" “)和join(” “)。
split(” ")方法,用来将字符串转换为数组,括号里面填写分隔符,分隔符可以自定义;
例、

let str = "1,5,8,1,3";
let arr = str.split(",");
console.log(arr);//得到转换成功后的数组 [ '1', '5', '8', '1', '3' ]

join(" ")方法,
例、

let str = "1,5,8,1,3";
let arr = str.split(",");
console.log(arr);//得到转换成功后的数组 [ '1', '5', '8', '1', '3' ]
console.log(arr.join(""));//得到转换成功后的字符串 "15813"

【扩展】数组遍历的其他方法

除了之前讲到的for、for-in和for-of循环来遍历数组,我们Js其实还有其他的遍历数组方法,而且我们也很常用;
forEach()方法;
例、

let arr = [6, 2, 8, 1, 5];
arr.forEach((value)=>{
    console.log(value);//遍历得到爱arr的每一项
});

数组自带的forEach 循环,使用频率较高,但实际上性能比普通for循环弱。
forEach不能使用 continue 和 break 语句中断循环,也不能使用return 语句返回到外层函数。
map()方法:按顺序让数组中每一项依次执行某种相同的操作,然后返回一个新数组。
例、

let arr = [6, 2, 8, 1, 5];
arr.forEach((value)=>{
    console.log(value);//遍历得到爱arr的每一项
});

小结:forEach()和map()的区别,前者是没有返回值的,后者会将操作后的新数组返回。
除此之外数组还有every()、some()和filter()方法我们比较常用:
1、every()方法,判断数组中每一项是否满足条件,如果全满足返回true,只要至少一项不满足就返回false:
例、

let arr = [6, 2, 8, 1, 5];
let re = arr.every((value)=>{
   return value >= 1;
});
console.log(re);//由于数组每一项都大于或等于1,因此返回true
let re1 = arr.every((value)=>{
    return value >= 2;
 });
 console.log(re1);//由于数组不满足每一都大于2,因此返回false

some()方法,判断数组中任意至少一项是否满足条件,如果找到存在满足的立即返回true并且终止函数,如果全部不满足则返回false;
例、

let arr = [6, 2, 8, 1, 5];
let re = arr.some((value)=>{
   return value >= 3;
});
console.log(re);//数组中存在大于3的数据,因此返回true
let re1 = arr.every((value)=>{
    return value >= 10;
 });
 console.log(re1);//数组中不存在大于10的数,因此返回false

filter()方法,判断每一项分别是否满足条件,并且返回满足条件的值,因此我们常用filter来做数据的筛选。
例、

let arr = [6, 2, 8, 1, 5];
let re = arr.filter((value)=>{
   return value >= 3;
});
console.log(re);//筛选出满足条件的值并返回 [ 6, 8, 5 ]

总结:Js是一门弱类型语言,因此数组中可以存储任意类型的数据,当然我们日常使用更多是同类型的数据,Js中数组的地位可谓举足轻重,在往后的学习中我们大家都仍重而道远。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值