JS中的数组

本文介绍了JavaScript数组的基础概念,包括数组的作用、元素类型、下标访问、长度动态性、数组定义、修改元素、多维数组、遍历和常见操作方法,以及冒泡排序算法的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、为什么有数组?

// 之前学习的数据类型,只能存储一个值。我们想存储班级中所有学生的姓名,此时该如何存储?

2、数组的作用:

可以把"一组相关的数据"一起存放,并提供方便的访问(获取)方式。

3、什么是数组:

// 数组是一组数据"有序"的集合。数组它是属于"复合数据类型"。至少可以存储一个值。

// 所谓数组,就是将多个元素(通常是同一类型)按一定顺序排列放到一个集合中,那么这个集合我们就称之为数组。

4、为什么要使用数组?

// 因为在我们工作中 有很多数据是有关联的 我们要表示的时候想把这些数据用一个”东西”来存储,这个时候就可以用到数组!

5、数组的相关概念:

// 什么是数组元素, 数组元素就是数组中每个数据

// 数组元素的类型, 数组元素的类型可以是JS中的任意类型

// 数组下标(索引), 数组下标默认就是从0开始每次递增1的数字

// 如何访问数组里面的某一个元素, 数组变量名[数组下标]

// 数组的长度, 数组长度就是数组元素的总个数; 通过 数组变量名.length 可以获取数组长度

// ❤注意: 数组长度是一个动态值, 随着数组元素的总个数变化而变化

// ❤❤❤最大数组下标 = 数组长度 - 1;

6、定义数组 
6.1 使用[]来定义数组 常用

// 定义空数组

var arr1 = [];

// 定义非空数组

// var 数组变量 = [值1, 值2, 值3...]

var arr2 = ["zhangsan"];

var arr3 = ["abc", 123, true, null, undefined, [10, 20, 30]];

// 获取数组长度

console.log("arr3.length=>", arr3.length);

// 获取某个数组元素

console.log("arr3[0]=>", arr3[0]);

console.log("arr3[2]=>", arr3[2]);

注意: 通过下标访问不存在的数组元素将返回undefined

6.2 使用new Array()构造函数方式来定义数组

// 定义空数组

var arr4 = new Array();

// 定义指定长度的空数组

// var 数组变量名 = new Array( size ); // size是数值

var arr5 = new Array(5);

console.log("arr5=>", arr5);

// 定义非空数组

// var 数组变量名 = new Array( 值1, 值2, 值3, 值4... )

var arr8 = new Array(10, "abc", 30, true, 50, 60);

console.log("arr8=>", arr8);

7、修改数组元素值

语法:

// 数组变量名[数组下标] = 新值

var arr9 = [10, 20, 30, 40, 50];

arr9[1] = 234;

8、多维数组

// JavaScript它本身是没有多维数组的概念,因为在JavaScript中 数组元素的数据类型可以是"任意数据类型"。假设在一个数组中有一些数组元素的的类型还是"数组" 这个时候我们就将它称之为多维数组,也就是数组嵌套数组

8.1 一维数组

// 简单来说,一个数组内所有"数组元素"的数据类型的都"不是数组类型",就是一维数组。

8.2 多维数组

// 超过一维都是可以叫多维,多维数组指的是一个数组中的数组元素又是一个数组。

// 二维数组, 就是数组嵌套数组 只嵌套一层

8.3 如何访问二维数组中的某个数组元素

语法:

// 数组变量名[下标1][下标2]

9、 数组的遍历

// 数组的遍历就是把数组中所有的数组元素都访问一遍

// 由于数组的下标是从0开始的,最大下标是数组长度-1, 所以是可以确定循环次数, 那么我们就推荐使用for循环遍历

9.1 一维数组的遍历

语法:

for(var i = 0; i < 一维数组变量名.length; i++ ){

console.log( 一维数组变量名[i] )

}

9.2 二维数组的遍历

语法:

/* for(var i = 0; i < 二维数组变量名.length; i++ ){

for(var j = 0; j < 二维数组变量名[i].length; j++ ){

console.log(二维数组变量名[i][j]);

}

10、数组的相关方法
10.1 数组添加和删除元素方法:

// push(值1,值2...) 向数组尾部添加一个或者多个值, 返回新的数组长度

// pop() 删除尾部最后一个数组元素 返回被删除的数组元素

// unshift(值1,值2...) 向数组头部添加一个或者多个值, 返回新的数组长度

// shift() 删除头部第一个数组元素 返回被删除的数组元素

// 以上4个方法,都会修改原数组

10.2 合并数组方法:

// concat(数组1,数组2...) 合并多个数组, 合成一个大数组, 将返回一个"新数组" 注意 不是合并成多维数组

// concat()方法中不写参数,将返回原数组一模一样的新数组

// concat()里面放参数

// 合并数组,我们不建议使用+号, 因为+号会把每个数组中数组元素已逗号作为连接符,每个组成拼接成一个字符串, 最后再拼接成一个大字符串 +号其实会调用数组的toString()方法

10.3 数组索引方法:

// indexOf("内容") 查找数组中数组元素第一次出现的位置; 找不到返回-1

// lastIndexOf("内容") 查找数组中数组元素最后一次出现的位置; 找不到返回-1

10.4 数组转换为字符串:

// join("连接符") 把数组元素按指定的连接符拼接成一个字符串 "连接符"参数可以省略,将使用逗号作为连接符

// 小结: 字符串对象的.split()方法是把字符串分割成数组,而数组对象的.join()方法是把数组拼接成字符串

10.5 slice:

含头不含尾

可以用来从数组中提取元素

该方法不会改变元素数组,而是将截取到的元素封装到一个新数组返回

参数:

1.截取开始的位置的索引,包含开始索引

2.截取结束的位置的索引,不包含结束索引

第二个参数可以省略不写,此时会截取从开始索引往后的所有元素

索引可以传递一个负值,如果传递一个负值,则从后往前计算

-1 倒数第一个

-2 倒数第二个

10.6 splice()

可以用于删除数组中的指定元素

使用splice()会影响到原数组,会将指定元素从原数组中删除

并将被删除的元素作为返回值返回

参数:

第一个,表示开始位置的索引

第二个,表示删除的数量

第三个及以后 , 可以传递一些新的元素,这些元素将会自动插入到开始位置索引前边

11、经典算法-冒泡排序:

// 冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法

11.1 冒泡排序思想:

// 让数组当中相邻的两个数进行比较,数组当中比较小的数值向下沉,数值比较大的向上浮!

// 外层for循环控制循环次数,内层for循环控制相邻的两个元素进行比较。

var arr = [5, 4, 3, 2, 1];

// 封装成冒泡排序函数

function bubbleSort(arr) {

  for (var i = 0; i < arr.length - 1; i++) {

     for (var j = 0; j < arr.length - 1 - i; j++) {

          if (arr[j] > arr[j + 1]) {

          // 交换两个变量的值

          var temp = arr[j + 1];

          arr[j + 1] = arr[j];

          arr[j] = temp;
                         }
                    }
               }
  return arr;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杨桃贝贝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值