5.2 Array类型

◆  创建数组的基本方式有两种。

①第一种是使用Array构造函数,new关键字可省略

var colors = new Array();

var colors = new Array(20);  //length值为20

var colors = new Array("red","blue","black");

②第二种是使用字面量表示法

var colors = ["red","blue","black"];
var emptyArr = [];  //空数组

◆  读取和设置数组的值

var colors = ["red","blue","green"];
alert(color[0]);        //显示第一项
color[2] = "green"      //修改第三项
color[3] = "pink"       //增加第四项


◆  length属性,可以通过设置该属性移除或添加数组中的项目

利用length属性可以在数组末尾添加项: colors [ colors.length ] = "white"

最后一项的索引是length-1

◆检测数组

‍instanceof()‍

Array.isArray()方法

◆栈方法 (LIFO)

Last-In-First-Out 后进先出的数据结构,最新添加的项最早被移除。push()和pop()方法。

push()方法可以接受任意数量的参数 ,把他们逐个添加到数组末尾,并返回修改后数组的长度。而pop()方法则移除数组最末尾的一项,返回移除的项。

		var color= new Array();
		var count=color.push("red","green");
		alert(count);   //2

		count = color.push("black");
		alert(count);   //3
		document.write(color);   //red,green,black

		var item = color.pop();
		alert(item);	//black
		document.write(color);   //red,green

◆队列方法(FIFO)

队列在列表的末尾添加项,从列表的前端移除项。push()方法和shift()方法

push()向数组末端添加项,shift移除数组中的第一个项并返回该项。

unshift()方法跟shift()方法相反,它在数组前端添加任意个项返回该新数组的长度。

◆重排序方法 :reverse() 和 sort()

reverse()方法会反转数组项的顺序。

var values = [1,2,3,4,5];
values.reverse();
alert(values);  //5,4,3,2,1

sort()方法按会调用每个数组项的toString()转型方法,然后比较得到的字符串,再从小往大排。

var values = [0,1,5,10,15];
values.sort();
alert(values);  //0,1,10,15,5

很多sort()方法接收一个比较函数作为参数,如:

function compare(value1,value2){
	if(value1<value2){
		return -1;
	}else if(value1>value2){
		return 1;
	}else{
		return 0;
	}
}

把上面的比较函数作为参数传递到sort()方法:

var values = [0,1,5,10,15];
values.sort(compare);
alert(values);  //0,1,5,10,15

交换比较函数返回的值可以产生降序排序的结果。

function compare(value1,value2){
	if(value1<value2){
		return 1;
	}else if(value1>value2){
		return -1;
	}else{
		return 0;
	}
}
var values = [0,1,5,10,15];
values.sort(compare);
alert(values);  //15,10,5,1,0

concat()方法

这个方法会创建当前数组一个副本,然后将接收到的参数添加到这个副本的末尾,最后返回新数组。没有传递参数的情况系 ,它只是复制当前数组并返回副本。

    var color = ["red","green","blue"];
    var color2 = color.concat("yellow",["black","gray"]);
    alert(color2); //red,green,blue,yellow,black,gray

slice()方法

这个方法可以接受一或两个参数,即要返回项的起始和结束位置。在只有一个参数的情况下,slice()方法返回从该参数指定位置开始到当前数组末尾的所有项。如果有两个参数,返回起始和结束位置之间的项(不包括结束位置的项),slice()方法不会影响原始数组。

var color = ["red","green","blue"];
var color2 = color.slice(1);
var color3 = color.slice(0,2);
alert(color2);  //green,blue
alert(color3);	//red,green
alert(color);	//red,green,blue

splice()方法

有很多种用法,主要用途是向数组的中部插入项。

-删除:指定2个参数,要删除的第一项的位置,要删除的项数。

var color = ["red","green","blue"];
var color2 = color.splice(0,1);
alert(color2);  //red
alert(color);	//green,blue

-插入:指定3个参数,起始位置,0(要删除的项数),要插入的项。

var color = ["red","green","blue"];
var color2 = color.splice(1,0,"yellow","pink","black"); //在位置1前插入
alert(color2);  //没有删除项,所以返回一个空数组
alert(color);	//red,yellow,pink,black,green,blue

-替换:指定3个参数,起始位置,要删除的项,要插入的项。

var color = ["red","green","blue"];
var color2 = color.splice(1,2,"yellow","pink","black");
alert(color2);  //green,blue
alert(color);	//red,yellow,pink,black

indexOf()方法 和 lastIndexOf()方法

这两个方法从接收两个参数:要查找的项,表示查找起点位置的索引(可选)。indexOf()方法从数组的开头向后查找,lastIndexOf()方法则从数组的末尾向前查找。

这两个方法都返回要查找的项在数组中的位置,没找到的情况下返回-1.

var color = ["red","green","blue"];

alert(color.indexOf("green"));  //1
alert(color.indexOf("green",2))	//-1 找不到,返回-1

alert(color.lastIndexOf("red")); //0
alert(color.lastIndexOf("green",0)) //-1

迭代方法:ECMAScript5为数组定义了5个迭代方法。每个方法都接收两个参数:要在每一项上运行的函数,运行该函数的作用域对象(可选)

而传入这些方法中的函数会接收三个参数:数组项的值,该项下数组中的位置,数组对象本身

    every():检测数组中的每一项是否符合条件,每一项都返回true,则返回true 

var num = [1,2,3,4,5];
var result = num.every(function(item,index,array){
	return(item > 0);
});
alert(result); //true

 some():检测数组中的某一项是否符合条件,只要某一项返回true,则返回true

var num = [1,2,3,4,5];
var result = num.some(function(item,index,array){
	return(item > 4);
});
alert(result); //true

filter():筛选出数组中符合条件的项,即返回true的项,返回这些项组成的新数组

var num = [1,2,3,4,5];
var result = num.filter(function(item,index,array){
	return(item > 2);
});
alert(result); //3,4,5

map():对数组的每一项运行传入的函数,对应项得出的结果产生一个新数组

var num = [1,2,3,4,5];
var result = num.map(function(item,index,array){
	return (item * 2);
});
alert(result); //2,4,6,8,10

forEach():对数组中的每一项运行传入的函数。没有返回值,本质上与使用for循环迭代数组一样

var num = [1,2,3,4,5];
var result = num.forEach(function(item,index,array){
	return (item);
});
alert(result); //undefined

两个缩小数组的方法:reduce() 和 reduceRight()方法

这两个方法都会迭代数组的所有项,然后构建一个最终返回的值。reduce()方法从数组的第一项开始,逐个遍历到最后,reduceRight()方法则从数组最后一项开始往前遍历到第一项。

这两个方法都接收两个参数:一个在每一项调用的函数,作为缩小基础的初始值(可选)

调用的函数接收4个参数:前一个值,当前值,项的索引,数组对象

var num = [1,2,3,4,5];
var result = num.reduce(function(prev,cur,index,array){
	return (prev*cur);
});
alert(result); //120 =1*2*3*4*5

reduceRight()的作用类似,不过方向相反而已。

时间: 2024-11-02 12:29:12

5.2 Array类型的相关文章

JavaScript的进阶之路(三)引用类型之Object类型和Array类型

引用类型 Object类型 function a(num){ if(num>3){ a(--num); } console.log(num); } a(5); //如何创建对象的实例 var obj1= new Object(); console.log(obj1); obj1.name="吴琼"; obj1.age=28; console.log(obj1.name+" "+obj1.age); //对象字面量语法 ,有点封装的感觉 var obj2 = {

Array类型

Array类型 创建方法: (1)构造函数法: var color = new Array(); //创建一个空数组,省略new也是可以的,等价于new color = Array(); var color = new Array(20); //创建一个length为20的数组 var color = new Array("red", "blue", "green"); //创建一个包含3个字符串的数组 (2) 数组字面量表示法(不会调用构造函数

【js实例】Array类型的9个数组方法,Date类型的41个日期方法,Function类型

前文提要:[js实例]js中的5种基本数据类型和9种操作符 Array类型的9个数组方法 Array中有9个数组方法: 1.检测数组 2.转换方法 3.栈方法 4.队列方法 5.冲排序方法6.操作方法 7.位置方法 8.迭代方法 9.归并方法 在实例中介绍,实例如下 /* Array类型 js数组中的每一项可以用来保存任何类型的数据:js数组的大小是可以动态调整的 */ var colors = ["red", "blue", "green"];

Object类型与Array类型

总结--JS中的引用类型: Object类型,Array类型,Boolean类型,Number类型,String类型,Date类型, Function类型,RegExp类型,单体内置对象(Global对象,Math对象) 1.Object类型:我们看到的大多数其他对象都可以称为是Object对象 1)创建Object对象的方式有两种:  第一种是使用new操作符后跟Object构造函数    var person =new Object();   //var person ={};    per

引用类型-Array类型~ 前端学习之路

今天开始记录每天所学的重点,为了加深印象也为了今后的复习. 今天学习的重点是引用类型中Array类型,Array类型中的栈方法,队列方法,重排序方法,操作方法,位置方法,迭代方法,归并方法.这几个方法我感觉尤为重要,因此记录下来,以便忘记了可以回顾. (一)栈方法 首先要知道的是栈是一种后进先出的数据结构,也就是最先添加的项最先移除.在JS中提供有两种方法,push()和pop()方法是实现类似于栈的行为. push()方法可以接受任意数量的参数,并且把它们放在数组的末尾,最后返回修改后数组的长

理解javascript中的Array类型

引子: 从事前端开发有段时间了,个人观点:想在前端开发这条路上走的更远,不仅要学好HTML&HTML5.CSS&CSS3,最重要的就是要学好javascript了.所以打好javascript基础是非常有必要,今天就平时所用的javascript中的数组Array类型做个整理.本人前端初学者,如果以下内容对您有帮助的话本人也非常欣慰,如果写的不好,请提出您的见解,共享下您在学习js中的宝贵经验,谢谢! Array类型是js中非常常用的数据类型了,这里就不脑补了,至于什么是数组类型,请绕道w

JavaScript入门之数组:Array类型详解

数组应该是每个语言中都用得极度频繁的数据类型,JavaScript也不例外. 个人认为,Js中的Array类型非常强大. 首先没有C/C++等语言需要在数组初始化时指定数组长度(并不可变)的要求. 也不需要指定特定的基本数据类型(Number,String,Boolean,Null,Undefined,Object),也就意味着,一个数组中可以存多种数据类型的值. 我想总结一下Array的常用方法,在这之前,先介绍一下Array的基本用法: 基本用法: 1.创建数组: //创建空数组 var a

JavaScript中Array类型方法总结

Array类型是ECMAScript中最常用的类型之一,ECMAScript中的数组与其他多数语言中的数组有着相当大的区别.ECMAScript数组的每一项可以保存任何类型的数据.这里总结了数组类型的大多数方法,方便以后查找使用. 一.创建数组的基本方式 创建数据的基本方式有两种: 1.使用Array构造函数 var colors=new Array();var colors=new Array(20); //创建length值为20的数组var colors=new Array("red&qu

mongo中查询Array类型的字段中元素个数

I have a MongoDB collection with documents in the following format: { "_id" : ObjectId("4e8ae86d08101908e1000001"), "name" : ["Name"], "zipcode" : ["2223"] } { "_id" : ObjectId("4e

JS引用类型(2)——Array类型

[2]Array类型ECMAScript数组的每一项可以保存任何类型的数据,并且大小是可以动态调整的,即可以随着数据的添加自动增长以容纳新增数据. (1)创建数组 1>使用Array构造函数 var colors = new Array(); var colors = new Array(20); var colors = new Array("red","blue","green"); var colors = Array(3); var