0
点赞
收藏
分享

微信扫一扫

(六)JavaScript 数组

承蒙不弃 2022-04-13 阅读 108

文章目录

JavaScript 数组

一、数组的简介

  • 数组(Array):用来存储一组相关的值,从而进行求和、计算平均数、逐项遍历等操作

二、数组的定义方法

  • 方法1在这里插入图片描述
  • 方法2在这里插入图片描述
  • 方法3:(这4项都是undefined在这里插入图片描述

三、访问数组项

  • 数组每一项都有下标,下标从 0 开始在这里插入图片描述
  • 可以使用方括号中书写下标的形式,访问数组的任一项console.log(arr[0]); //A
  • 访问数组中不存在的项会返回undefined,不会报错console.log(arr[10000]); //undefined

四、数组的长度

  • 数组的 length 属性表示它的长度在这里插入图片描述
  • 数组的最后一项的下标是数组的长度减 1

五、更改数组项

  • 数组中任何项的值都可以修改在这里插入图片描述
  • 如果更改的数组项超过了 length-1,则会创造这一项在这里插入图片描述

六、数组的遍历

  • 数组的最大优点就是方便遍历在这里插入图片描述

七、数组类型的检测

  • 数组用 typeof 检测结果是 object
  • Array.isArray()方法可以用来检测数组(返回布尔值,兼容到 IE8)

八、数组的常用方法

1. 数组的头尾操作

  • 在这里插入图片描述
  • push()方法
    • 用来在数组末尾推入新项,参数就是要推入的项
    • 如果要推入多项,可以用逗号隔开
    • 调用push()方法后,数组会立即改变,不需要赋值
  • pop()方法
    • 用来删除数组中的最后一项
    • pop()方法不仅会删除数组末项,而且会返回被删除的项
  • unshift()方法
    • 用来在数组头部插入新项,参数就是要插入的项
    • 如果要插入多项,可以用逗号隔开
    • 调用unshift()方法后,数组会立即改变,不需要赋值
  • shift()方法
    • 用来删除数组中下标为 0 的项
    • shift()方法不仅会删除数组首项,而且会返回被删除的项

2. 数组的其他操作

  • splice()方法
    • 用于替换数组中的指定项arr.splice(要开始替换的项的下标,要连续替换的项的数目,要替换上的项(可以有多项))
    • 用于在指定位置插入新项arr.splice(要插入的位置的下标, 0, 要插入的项(可以有多项))
    • 用于删除指定位置的项arr.splice(要开始删除的项的下标,1/要连续删除的项的数目)
    • splice()方法会以 数组形式 返回被删除的项
  • slice()方法
    • 用于得到子数组,类似于字符串的 slice() 方法
    • slice(a,b)截取的子数组从下标为 a 的项开始,到下标为 b (但不包括下标为b的项)的项结束
    • slice(a,b)方法不会更改原有数组
    • slice(a)截取的子数组为从下标 a 开始到 数组末尾 的所有项
    • slice()方法的参数允许为负数,表示数组的倒数第几项
  • concat()方法
    • 用来合并连结多个数组在这里插入图片描述
    • concat()方法不会改变原数组
  • reverse()方法
    • 用来将一个数组中的全部项的顺序置反
      在这里插入图片描述
  • indexOf()方法
    • 用来搜索数组中的元素,并返回它的所在位置,如果元素不存在则返回 -1
  • includes()方法
    • 用来判断一个数组是否包含一个指定的值,返回布尔值
  • sort()方法
    • 用来将数组排序,这个方法的参数又是一个函数在这里插入图片描述
    • 这个函数中的 a、b 分别表示数组中靠前和靠后的项,如果需要将它们交换位置,则返回任意正数;否则返回负数
arr.sort(function (a, b) {
	return a - b;
});

3. 数组与字符串

  • join()方法
    • 使数组转为字符串
    • join()的参数表示以什么字符作为连接符,如果留空则默认以逗号分隔(如同调用toString()方法)
  • split()方法
    • 使字符串转为数组
    • split()的参数表示以什么字符拆分字符串,一般不能留空
  • 字符串也可以使用 方括号内写下标的形式 访问某个字符,等价于charAt()方法

4. 数组去重

<script>
	var arr = [1, 1, 1, 2, 2, 3, 3, 3, 2, 1];
	var result = [];
	for (var i = 0; i < arr.length; i++) {
		if (!result.includes(arr[i])) {
			result.push(arr[i]);
		}
	}
	console.log(result);
</script>

5. 数组的随机样本

<script>
	var arr = [3, 6, 10, 5, 8, 9];
	var result = [];
	for (var i = 0; i < 3; i++) {
		var n = parseInt(Math.random() * arr.length);
		result.push(arr[n]);
		arr.splice(n,1);
	}
	console.log(result);
</script>

九、数组的排序

1. 冒泡排序

  • n 个数字,共需要比较 n-1 趟,比较次数为 n(n-1)/2 次
<script>
	var arr = [6, 2, 9, 3, 8, 1];
	for (var i = 1; i < arr.length; i++) {
		for (var j = arr..length - 1; j >= i; j--) {
			if (arr[j] < arr[j-1]) {
				var temp = arr[j];
				arr[j] = arr[j - 1];
				arr[j - 1] = temp;
			}
		}
	}
	console.log(arr);
</script>

十、二维数组

  • 二维数组:以数组作为数组元素的数组
  • 二维数组可以看做是矩阵 matrix

1. 二维数组的定义

var matrix = [
	[11,33,55],
	[22,33,44],
	[36,49,52],
	[56,10,23]
];

2. 二维数组的遍历

<script>
	var matrix = [
		[11,33,55],
		[22,33,44],
		[36,49,52],
		[56,10,23]
	];
	console.log(matrix.length);		//4
	
	//循环输出二维数组中的每一个项
	for (var i = 0; i < 4; i++) {
		console.log(matrix[i][j]);
		}
	}
</script>
举报

相关推荐

0 条评论