数组中可以存放任意类型的数据数组长度可以任意变化

数组简介

访问数组元素:“array[subscript]”

数组可以存储任何类型的数据

数组长度可以任意改变,不需要提前声明

数组元素个数:数组名.length

数组的定义 一维数组是使用 Array() 函数定义的

使用 Array() 函数创建更详细的数组对象

格式:

var 数组名 = new Array(); //数组下标从0开始

使用方括号[]直接声明和设置每个元素的值

	//用数组存放相同类型的数据
			var array = ['JS','Java'];
			console.log(JSON.stringify(array));
			
			//用数组存放不同类型的数据
			var array = [1,"1",true,null,String(undefined)];
			console.log(JSON.stringify(array));

图片[1]-数组中可以存放任意类型的数据数组长度可以任意变化-唐朝资源网

二维数组

一维数组的每个元素都是一个数组,所以称为二维数组。如果二维数组的每个元素都是一个数组,那么它就是一个多维数组。

虽然数组中的元素类型可以不一致,但实际使用一般需要统一的数据类型。二维数组就是让每个子数组统一数据类型和意义


			var array = [
				['JAVA','java'],
				['JS','js']
			];
			console.log(JSON.stringify(array,null,' '));

图片[2]-数组中可以存放任意类型的数据数组长度可以任意变化-唐朝资源网

数组属性长度属性

length 表示数组中的元素个数

可以直接修改数组的长度属性。如果增加数组的length属性,数组中会出现空白元素;如果减少数组的length属性,则自动删除下标大于等于length的元素(实际场景中,一般认为是只读属性,不是只读属性)。直接修改数组的length属性)

原型属性数组操作

JS提供了很多操作数组和数组元素的函数,涵盖了常见的数组操作函数

新元素

新增元素分为三种,分别在数组尾部、中间、头部添加元素。

末尾的新元素(数组名.push)

使用push函数添加新元素时,数组长度自动加1js 数组操作类库,新元素设置为尾元素;当 push 函数接收到多个参数时,自动在尾部添加多个元素


			var array = [1,2,3];
			console.log(JSON.stringify(array));
			array.push(4);
			console.log(JSON.stringify(array));
			array.push(5,6);
			console.log(JSON.stringify(array));

在数组中间添加一个元素(数组名.splice)

JS支持向数组中的某个位置添加新元素,并自动调整其他元素的索引

数组名.splice(参数1,参数2,参数3,......,参数3)
参数1:新增元素插入的位置
参数2:从插入位置是否删除后续元素
参数3...n:插入n个新元素

			var array = [1,2,3];
			console.log(JSON.stringify(array));
			array.splice(3,0,4);
			console.log(JSON.stringify(array));
			array.splice(4,0,5,6);
			console.log(JSON.stringify(array));
			array.splice(3,2,7);	//从4号索引处开始删除,删除两个,4,5被删
			console.log(JSON.stringify(array));

图片[3]-数组中可以存放任意类型的数据数组长度可以任意变化-唐朝资源网

在数组的开头添加一个元素(数组名.unshift)


			var array = [1,2,3];
			console.log(JSON.stringify(array));
			array.unshift(3,0,4);
			console.log(JSON.stringify(array));
			array.unshift(4,0,5,6);
			console.log(JSON.stringify(array));
			array.unshift(3,2,7,8,9);
			console.log(JSON.stringify(array));

图片[4]-数组中可以存放任意类型的数据数组长度可以任意变化-唐朝资源网

查找元素

查找元素有三种方式:从后到前、从前到后、按条件搜索

从前到后(数组名.indexOf(值))

从前向后搜索:数组的indexOf(value)从0开始向后查找value在数组中的位置,如果存在则返回该值对应的索引,如果不存在则返回-1

indexOf(value)
遵循规则:
		如果value存在于数组中,返回与value全等的元素的索引
		索引从0开始,如果存在,返回-1
		indexOf(value)使用全等(===)进行比较
	

			var array = [1,2,3];
			console.log(JSON.stringify(array));
			console.log('元素 1 的位置在:索引号'+array.indexOf(1));

从后到前(数组名.lastIndexOf(value))

和indexOf(value)一样,区别是从后往前搜索

按条件查找 (find(callback)) 删除元素 (array name.splice())

用splice函数删除指定下标的元素后js 数组操作类库,自动更新后续元素的下标,使索引连续。(删除操作删除一个元素而不更正其他元素的索引)


			var array = [1,2,3];
			console.log(JSON.stringify(array));
			
			array.splice(0,2);	
			//参数1:索引号
			//参数2:从索引号开始删除元素的个数
			
			console.log(JSON.stringify(array));

图片[5]-数组中可以存放任意类型的数据数组长度可以任意变化-唐朝资源网

替换元素(数组名.splice())

数组名.splice(parameter1, parameter2, parameter3, … , parameter3)

参数一:索引号

参数2:表示要删除多少个元素

参数3:表示替换的元素


			var array = [1,2,3];
			console.log(JSON.stringify(array));
			array.splice(1,2,'a','a','a');
			//从索引号1开始,删除两个,把三个字符a替换进去
			console.log(JSON.stringify(array));
			
			var array = [1,2,3];
			array.splice(0,2,'a','a','a');
			//从索引号0开始,删除两个,把三个字符a替换进去
			console.log(JSON.stringify(array));

为 i++ 迭代数组迭代数组


			var array = [1,2,3];
			for(var i=0;i<array.length;i++)
			console.log(JSON.stringify(array[i]));

for…in 遍历数组


			var array = [1,2,3];
			for(var key in array)
			console.log(JSON.stringify(array[key]));

forEach 遍历一个数组

数组的 forEach() 方法接收一个回调函数作为参数,并对每个元素执行一次该函数

语法:


forEach(callback[,thisArg])
callback:必选参数,表示为每个元素执行的回调函数,该函数接收三个参数
形式:callback(element,index,array)
      element:当前元素
      index:元素对应的索引号
      array:当前数组
thisArg:可选参数,表示执行callback时绑定的this对象

			var array = [1,2,3];
			array.forEach(function(element,index,array)
			{
				console.log('索引号:'+index,'元素:'+element);
			});

图片[6]-数组中可以存放任意类型的数据数组长度可以任意变化-唐朝资源网

数组排序

基于就地算法sort(callback)的排序方法

callback(a,b)
参数a、b表示数组的两个元素,sort将按照一定顺序使用两个数组元素作为参数调用callback回调,再根据callback的返回值(-1、0、1)调整元素a、b在数组中的位置
-1(小于0的数),表示a位于b的前面,否则a、b交换位置
1(大于0的数),表示a位于b的后面,否则a、b交换位置
0,表示a、b位置不需要交换
调用sort函数如果没有传递callback参数时,将根据数字大小或字符串的Unicode编码对元素排序

			var array = [1,2,3,5,4];
			array.sort();
			console.log(array);			//数字排序
			
			var list = ['a','c','b'];
			list.sort();
			console.log(list);			//字符排序
			
			var compareScore = function(a,b){
				if(a.score == b.score) return 0;
				if(a.score > b.score) return 1;
				if(a.score < b.score) return -1;
			};
			list = [
				{name:'1',score:90},
				{name:'2',score:80},
				{name:'3',score:85}
			];
			list.sort(compareScore);	//传递callback参数
			console.log(list);

排序的稳定性指标是指每次排序的结果都是一样的。sort() 的稳定性取决于 callback()

如果 callback(a,b) 是稳定的,那么 a 和 b 的比较结果是稳定的,那么 sort() 是稳定的,反之亦然。

数组求和

使用数组的reduce函数(从前到后)或reduceRight函数(从后到前)进行累加


			var sum=0;
			var array = [1,2,3,5,4,5];
			for(var i=0;i<array.length;i++)
				sum += array[i];
			console.log(sum);
			sum=0;
			
			var sum = array.reduce(function(subTotal,currentValue){
				return subTotal+currentValue;
			});
			console.log(sum);

快速交换


			var a=1,b=100;
			var list = [a,b];
			a = list[1];
			b = list[0];
			console.log(a,b);

© 版权声明
THE END
喜欢就支持一下吧
点赞262赞赏 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容