js数组中的方法

js数组中的方法
1、push和pop
push方法用于在数组的末端添加一个或者多个元素,并返回添加因元素后的数组长度,push方法会改变原数组
pop方法用于删除数组中的最后一个元素,并返回该元素,会改变原数组,对于空数组,使用pop方法不会报错,返回undefined 用法:arr.pop();小括号内不写参数。
push与pop结合使用就构成了“先进后出结构(stack)(先进后出 如:快递车装满,一个一个从快递车中取快递,最后的快递先被取出来,最先放进快递车的快递最后被取出来,先进后出)
2、shift和unshift
shift方法用于删除数组中的第一个元素,并返回该元素,会改变原数组的长度
例如:var a = [‘a’,‘b’,‘c’] a.shift() //删除了‘a’
原数组为:[‘b’,‘c’]
unshift方法用于在数组中的第一个位置添加元素,并返回添加新元素后的数组长度,会改变原数组
例如:var a=[‘a’,‘b’,‘c’];
a.unshift(‘x’);
数组就变为[‘x’,‘a’,‘b’,‘c’];//数组的长度为4
push和shift结合使用,就构成了“先进先出队列结构(先进先出 如:买票排队,先排在前面的,先离开)
3、slice方法
slice方法用于提取目标数组的一部分(copy数组),返回一个新的数组不改变原数组
arr.slice(start,end);
第一个参数为起始位置(从0 开始),第二个参数为终止位置(该位置的元素本身不包含在内);
如果省略第二个参数,则一直返回到原数组中的最后一个成员。
var a = [‘a’,‘b’,‘c’];
a.slice(0);//[‘a’,‘b’,‘c’]
a.slice(1);//[‘b’,‘c’]
a.slice(1,2);//[‘b’]
a.slice();//[‘a’,‘b’,‘c’] //slice没有参数,则返回原数组的拷贝
如果slice参数是负数,则表示倒数计算的位置。
var a = [‘a’,‘b’,‘c’];
a.slice(-2) //[‘b’,‘c’];从倒数第二个数开始到最后
注意:如果第一个参数大于数组长度或者第一个参数大于第二个参数时,返回空数组。
4、splice方法
splice用于删除与数组中的一部分成员,并且可以在删除位置添加新的成员,返回值时被删除的元素,会改变原数组
splice:第一个参数是删除的起始位置(从0开始)第二个参数是被删除的元素的个数,如果后面还有更多的参数,是要被插入数组的新元素。
例如:`var a = [‘a’,‘b’,‘c’,‘d’,‘e’,‘f’]
a.splice(4,2,1,2) //[‘e’,‘f’]被删除,‘a’代表的数组下标为0,‘e’是第4个元素,2表示删除2个元素,1,2表示要被插入数组的新元素。
如果只提供第一个参数,等同于将原数组在指定位置拆分成两个数组
var a = [1,2,3,4];
a.splice(2)//[3,4]
a //[1,2]
5、reverse方法
reverse方法用于颠倒排列数组元素,返回改变后的数组,会改变原数组。
var a = [‘a’,‘b’,‘c’];
a.reverse() //[‘c’,‘b’,‘a’];
6、sort方法
sort方法对数组进行排序,默认按照字典顺序排序,排序后原数组将会改变。
sort方法按照字典顺序排序,数值后弦转换成字符串再按照字典顺序排序,如果想按照自定义方式排序,可以传入一个函数作为参数

arr.sort(function(a,b){
	return a - b;//升序

})

  arr.sort(function(a,b){
    	return b - a;//降序
})

7、join方法
join方法以指定参数作为分隔符,将所有的数组成员连接成一个字符串返回,如果不提供参数,默认用逗号分隔。
a.join(’|’) //‘1|2|3|4’
a.join() //‘1,2,3,4’
如果数组成员是undefined或null会被转为空字符串

ES5新增数组方法
1、Array.isArray()返回一个布尔值,表示参数是否为数组
var arr = [1,2,3];
Array.isArray(arr); //true
2、map将数组的所有成员依次传入参数函数,然后把每一次的执行结果组成一个新数组返回

			var number = [1,2,3];
			var res = number.map(function(n){
				return n + 1;
			});
			//res [2,3,4]

map接受一个函数作为参数,该函数调用时,map方法向它传入三个参数,当前成员,当前位置,数组本身

			var number = [1,2,3];
			number.map(function(elem,index,arr){
				return elem * index;
			});
			//[0,2,6]

3、forEach()方法 也是对数组的所有成员执行参数函数,但forEach方法没有返回值,只用来操作数据(单纯的遍历数组)
forEac方法同样接受三个参数,当前值,当前位置,整个数组

			var number = [1,2,3];
			number.forEach(function(elem,index,arr){
				console.log(elem * index);
			});
			//[0,2,6]

forEach方法无法中断执行,总是会把所有的成员遍历完
如果希望符合条件就中断遍历,要使用for循环

			var arr = [1,2,3];
			for(var i = 0; i < arr.length; i++){
				if(arr[i] == 3)break;//元素为3的时候停止
				console.log(arr[i]);//1,2
			}
			

4、filter方法用于过滤数组成员,满足条件的成员组成一个新的数组返回,它的参数是一个函数,所有的数组成员依次执行该函数,返回结果为true的成员组成一个新数组返回,该方法不改变原数组
filter方法的参数函数可以接受三个参数:当前成员,当前位置,整个数组。

			var arr = [1,2,3];
			var res = arr.filter(function(elem,index,arr){
				return index % 2 == 0;
			});
			console.log(res); //1,3

5、some() 和 every()
这两个方法返回一个布尔值,表示判断数组成员是否符合某种条件,它们接受一个函数作为参数,所有数组成员依次执行该函数,该函数接受三个参数当前成员,当前位置,整个数组,然后返回一个布尔值。
some方法只要一个成员的返回值是true,则整个some方法返回的值就是true,否则返回false

			var arr = [1,2,3];
			var res = arr.some(function(elem,index,arr){
				return elem >=3;
			});
			console.log(res); //true

every方法所有成员的返回值都是true,则整个every方法返回的值就是true,否则返回false

			var arr = [1,2,3];
			var res = arr.every(function(elem,index,arr){
				return elem >=3;
			});
			console.log(res); //false

6、reduce方法依次处理数据中的每一个成员,最终累计为一个值,reduce是从左到右处理(从第一个成员到最后一个成员)(做累加或累乘)
reduce方法参数是一个函数,该函数接受两个参数
1、累计变量 ,默认为数组的第一个成员。
2、当前变量,默认为数组的第二个成员。

			var arr = [1,2,3];
			var res = arr.reduce(function(a,b){
				return a + b;
			});
			console.log(res); //累加结果为6
			var arr = [1,2,3,4];
			var res = arr.reduce(function(a,b){
				return a * b;
			});
			console.log(res); //累乘结果为24

7、indexOf方法返回给定元素在数组中第一次出现的位置,如果没有则返回-1

			var arr = [1,2,3,4];
			var res = arr.indexOf(2);
			console.log(res);//1

indexOf还可以接受第二个参数,表示搜索的开始位置
[‘a’,‘b’,‘c’].indexOf(‘a’,1); //-1
//从1号位置开始搜索字符a,没有搜索到,结果为-1;
8、lastIndexOf方法返回给定元素在数组中第一次出现的位置,如果没有出现则返回-1

			var arr = [2,5,9,2];
			var res = arr.lastIndexOf(2);
			console.log(res);//3最后一个2数组下标为3,返回3

注意indexOf 和 lastIndexOf不能用来搜索NaN的位置,无法确定数组成员是否包含NaN

			var res1 = [NaN].indexOf(NaN);
			console.log(res1); //-1
			var res2 = [NaN].lastIndexOf(NaN);
			console.log(res2); //-1

这两种方法内部都是严格相等运算符(===)进行比较。NaN是唯一一个不等于自身的值。

猜你喜欢

转载自blog.csdn.net/D321xiaoding/article/details/82831444
今日推荐