JavaScript学习------Array类型

js对数组的操作:

p.length:获取数组的长度

push():在数组的末尾添加一个或多个项目

unshift():在数组的开头添加一个或多个项目

pop():从数组中删除最后一个项目

shift():从数组中删除第一个项目

重排序方法:

reverse():反转数组项的顺序

sort():默认情况下按升序排列数组项,会调用每个数组项的toString()转型方法,再比较得到的字符串,即使数组中每一项都是数值,比较的也是字符串

var val=[0,1,5,10,15];
val.sort();
console.log(val);//0,1,10,15,5

上述例子,数值5虽然小于10,但是在进行字符串比较时,“10”位于“5”前面,于是数组的顺序被改变了,但是这种方法在多数情况下不是最佳方案。但是可以接收一个比较函数作为参数,便于我们指定哪个值位于哪个值前面

function compare(val1, val2){
		if(val1<val2){
			return 1;
		}
		else if(val1>val2){
			return -1;
	 	}
		else{
			return 0;
		}
	}
	var values=[0,1,5,10,15];
	values.sort(compare);
	console.log(values);//15,10,5,1,0

操作方法:

concat():基于当前数组中的所有项创建一个新数组,具体说,先创建当前数组的一个副本,再将接收到的参数添加到这个副本的末尾,返回副本。若没有参数则只是复制当前数组的副本,若参数是一个或多个数组则将每一项都添加到结果数组中,若值不是数组,则值被简单添加到结果数组的末尾

var colors=["red","green","blue"];
var colors1=colors.concat("yellow",["black","brown"]);
console.log(colors);//red,green,blue
console.log(colors1);//red,green,blue,yellow,black,brown

slice():基于当前数组中的一个或多个项创建一个新数组,接收一个或两个参数,既要返回项的起始和结束位置。若只有一个参数,返回从指定位置开始到当前数组末尾的所有项。若有两个参数,返回起始和结束位置之间的项,但不包括结束位置的项。若参数中有一个为负数,则用数组长度加上该数来确定相应位置,若结束位置小于起始位置则返回空数组。注意slice方法不会影响原始数组

var colors=["red","green","blue","yellow","purple"];
var colors1=colors.slice(1);
var colors2=colors.slice(3,4);
var colors3=colors.slice(-2,-1);
console.log(colors);//red,green,blue,yellow,purple
console.log(colors1);//green,blue,yellow,purple
console.log(colors2);//yellow
console.log(colors3);//yellow

splice():主要是向数组的中部插入项,使用方式有如下3种:

删除:可以删除任意数量的项,需指定2个参数:要删除的第一项的位置和要删除的项数,如,splice(0,2)删除数组中的前两项

插入:可以向指定位置插入任意数量的项,需提供3个参数:起始位置、0(要删除的项数)、要插入的项,若要插入多项,再传入第四、第五及任意多项,如,splice(2,0,"red","green")从当前数组的位置2开始插入字符串

替换:可以向指定位置插入任意数量的项,且同时删除任意数量的项,需指定3个参数:起始位置、要删除的项数、要插入的任意数量的项。插入的项数不必与删除的项数相等,如,splice(2,1,"red","green")先删除当前数组位置2的项,再从位置2开始插入字符串

位置方法:

indexOf()和lastIndexOf():都接收两个参数:要查找的项和(可选)查找起点位置的索引,indexOf()从数组开头开始向后查找,lastIndexOf()从数组末尾开始向前查找,返回要查找的项在数组中的下标,没找到返回-1

迭代方法:

ECMAScript5为数组定义了5个迭代方法,每个方法都接收两个参数:要在每一项运行的函数和(可选)运行该函数的作用域对象------影响this的值。传入这些方法中的函数接收三个参数:数组项的值、该项在数组中的位置和数组对象本身。根据使用方法不同,函数执行后的返回值可能会也可能不会影响方法的返回值。以下是5个迭代方法的作用:

  • every():对数组中的每一项运行给定函数,若函数对每一项都返回true,则返回true
  • filter():对数组中的每一项运行给定函数,返回该函数会返回true的项组成的数组
  • forEach():对数组中的每一项运行给定函数,没有返回值
  • map():对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组
  • some():对数组中的每一项运行给定函数,如果该函数对任一项返回true,则返回true

以上方法都有不会修改数组中包含的值

var numbers=[1,2,3,4,5,4,3,2,1];
	var everyResult=numbers.every(function(item,index,array){
		return (item>2);
	});
	console.log(everyResult);//false
	
	var someResult=numbers.some(function(item,index,array){
		return (item>2);
	});
	console.log(someResult);//true
	
	var filterResult=numbers.filter(function(item,index,array){
		return (item>2);
	});
	console.log(filterResult);//3,4,5,4,3
	
	var mapResult=numbers.map(function(item,index,array){
		return (item*2);
	});
	console.log(mapResult);//2,4,6,8,10,8,6,4,2
		
	numbers.forEach(function(item,index,array){
		//需要执行的操作		
	});

归并方法:

reduce()和reduceRight():都会迭代数组的所有项,构建一个最终返回值,reduce()从数组的第一项开始追个遍历到最后,reduceRight()从数组的最后一项开始向前遍历每一项。两个方法都接收两个参数:一个在每一项调用的函数和(可选)作为归并基础的初始值。函数接收4个参数:前一个值、当前值、项的索引、数组对象,这个函数返回的任何值都会作为第一个参数自动传给下一项。第一次迭代发生在数组的第二项上,因此第一个参数是数组的第一项,第二个参数是数组的第二项

	var number=[1,2,3,4,5];
	var sum=number.reduce(function(prev,cur,index,array){
		return prev+cur;
	});
	console.log(sum);//15
	
	var sum1=number.reduce(function(prev,cur,index,array){
		return prev+cur;
	},5);
	console.log(sum1);//20

猜你喜欢

转载自blog.csdn.net/LIUHONGLIAN915/article/details/81538716