数组常用方法整理

本文介绍了数组常用方法,包括创建方式、元素添加与读取、长度操作等,还提及数组操作如push、pop等,以及截取方式slice和splice。此外,阐述了join、reverse、sort等方法。最后介绍了ES5新增数组方法,如forEach、map、filter等。

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

数组常用方法

有序的值的集合   是一个对象    数组是使用数字作为索引的操作元素
索引:从0开始的整数	 每一个数组都有元素,每一个元素在数值中都有一个位置,分别用数字表示

创建方式:

1.构造数组:
var arr = new Array ();
console.log(typeof arr); //object

1>.向数组中添加元素
语法:数组[索引] = 值;
arr[0] = 1;

2>.读取数组中的内容
语法:数组[索引];
索引超过最大取值,得到underfined

var arr = new Array();
arr[0] = 1;
arr[1] = 2;
console.log(arr,arr.length);  //1,2   2

3>.获取数组长度,可以使用length属性,获取数组长度

语法:数组.length
对于连续的数组,使用length可获取到数组的长度(元素的个数)
对于不连续的数组,使用length会获取到数组的最大索引+1;
	 arr[100] = 24
 	console.log(arr.length);   //101

4>. 修改length
如果修改的length大于原长度,则多出部分会空出来;
如果修改的length小于原长度,则多出的部分会删除;

var arr1 = new Array();
  	arr1[0] = 1;
   arr1[1] = 2;
   	arr1[2] = 3;
    arr1[3] = 4;
    //console.log(arr1,arr1.length);
    arr1.length = 10;
    console.log(arr1,arr1.length);  //如果修改的length大于原长度,则多出部分会空出来;
arr1.length = 2;
console.log(arr1,arr1.length);  //如果修改的length小于原长度,则多出的部分会删除;

数组的操作push/pop/unshift/shift

		1.push   //从数组的尾部添加一个或多个元素,返回增加后数组的长度
		
		2.pop() 从数组的尾部删除一个元素,返回这个删除的元素,原数组发生改变,不接受参数
		
		3.unshift()从数组的头部增加元素,有几个参数增加几个元素,返回增加后的数组的长度,原数组发生改变
		4.shift()从数组的头部删除一个元素,返回这个删除的元素,原数组发生改变,不接受参数

截取方式:slice 和 splice

		slice:     原数组不发生变化
			截取数据,返回原数据,需要将截取的数据封装到一个新数组中返回
		  第一个参数:截取开始位置的索引,包含起始索引
		  第二个参数:截取结束位置的索引,不包含结束索引
		  var a = arr(0,2);
		  第二个参数可以不写:可以截取从开始索引往后的所有元素
		  第二个参数可以是负值:则从后往前截取   -1:即位置为最后一个
		  
		splice:   原数组发生变化
			截取数据,用来删除数据中指定的元素   需要将截取的数据封装到一个新数组中返回
			使用splice会影响到原数组,将指定的元素从数据中删除
				并将删除的元素作为返回值返回
			参数:
			第一个参数:开始位置的索引
			第二个参数:删除的数量
			第三个参数:可以传递一些新的元素,这些元素将自动插入到开始索引位置的前面

			 var arr = ["孙","猪","唐","莎"];
			var b = arr.slice(0,2);
			console.log(b);  //孙   猪
			console.log(arr);  //孙  猪  唐 莎
			var a = arr.splice(1,1,"牛魔王");
			console.log(a);   //猪
			console.log(arr);   //孙 牛魔王 唐 莎

join()
将数值转换成字符串
不会对原数据产生影响,会把转化后的字符串作为结果返回
在join()中可以指定一个字符串作为参数,这个字符串将会作为数组中元素的连接符
如果不指定连接符,默认为,
reverse():
用来反转数组,前面的去后面,后面的去前面;
该方法会直接修改原数据

var arr6 = ["孙","猪","唐","莎"];
//result = arr6.join("hello");
//console.log(result);
arr6.reverse();
console.log(arr6);
						
var arr7 = ["c","j","f","h","t"];
arr7.sort();////默认从小到大
arr7.reverse();//可以反着来
console.log(arr7);

sort():
用来对数组进行排序
会直接修改原数据
默认会按照Unicode编码排序

可以在sort()中添加一个回调函数,来指定排序规则
回调函数中定义两个形参
浏览器分别使用数组中的元素作为实参调用回调函数
使用哪个元素不一定,但是肯定的是a在b的前面;
浏览器会根据回调函数的返回值来确定元素的位置
返回一个大于0,则会交换位置
返回一个小于0,则位置不变
返回一个等于0的值,则位置不变

var arr8 =[1,5,6,8,11];
arr8.sort();
//console.log(arr8);  //1,11,5,6,8
arr8.sort(function (a,b){
		return a-b;   //如果从大到小  return b-a
});
console.log(arr8);//1,5,6,8,11

总结:
原数组发生变化:
pop
push
unshift
shift
splice
reverse
sort

原数组没有发生变化:
slice
join

ES5新增数组方法:

1.forEach: 不接受返回值
forEach()方法需要一个函数作为参数
数组中有几个元素,函数就执行几次,每次执行时,浏览器会将遍历到的元素以实参形式传递进来,可以定义形参来读取内容
第一个参数 value:当前正在遍历的元素
第二个参数 index:当前正在遍历的元素的索引
第三个参数 obj:正在遍历的数组
forEach方法无法中断执行,总是会将所有成员遍历完。如果希望符合某种条件时,就中断遍历,要使用for循环。

2.map():对数组的所有成员一次执行参数函数 接受返回值 原数组没有发生变化

			 var arr = [1,2,3,5];
				var a = arr.forEach(function(item){
					//console.log(item);
					return item+1;
				});
				var a = arr.map(function(item){
					//console.log(item);
					return item+1;
				});
				
				console.log(a);
				
				var b = arr.filter(function(item){
				return item>2;
			})
			console.log(b);  //3,5
			
			var arr = [1,2,3,5];
			console.log(arr.indexOf(5),arr.indexOf(11));  //3, -1
			
			var a = arr.some(function(item){
				return item>2;
			})
			console.log(a);  //true
			var a = arr.every(function(item){
				return item>2;
			})
			console.log(a);   //false

3.filter(): 用于过滤数组成员,满足条件的成员组成一个 新数组返回 原数组不变
它的参数是一个函数,所有数组成员一次执行,返回结果为 true 的元素组成一个新数组返回
第一个参数:当前成员
第二个参数:当前成员的索引
第三个参数:整个数组

4.indexOf(): 从 头部 返回某个元素(第一次出现)在数组中的索引,没有该元素则返回 -1, 可以判断一个数组中是否有某个元素

lastindexOf(): 从 尾部 开始返回某个元素(最后一次出现)在数值中的索引, 没有该元素则返回 -1

5.some() every(): 返回布尔值,表示判断数组成员是否符合某条件、
参数为一个函数,成员一次执行
some(): 一个成员值为true 则为true
every();所有成员值为true ,则为true

6.reduce(): 将内部的返回值作为实参传递第一个形参,进行下一次运算

var arr =[1,2,3,5]
var sum = arr.reduce(function(a,b){
	return a+b;
});
console.log(sum);  //1+2+3+5=11

var users = [
		 {name: 'tom', email: 'tom@example.com',age:16},
		 {name: 'peter', email: 'peter@example.com',age:18}
];
						
users
.filter(function (person) {
		 return person.age>=18;
})
.forEach(function(e){
		console.log(e)
});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值