您的位置:首页 > Web前端 > JavaScript

js中数组的基本操作

2017-06-12 15:45 253 查看
1.数组的基本操作

前言:ECMAScript数组是很常用的一种数据类型,在其他的语言中,数组也是很常用很重要的一种数据类型.但ECMAScript数组有些地方还是有自己的特点的,如下:

1)数组的每一项可以保存任何数据类型的数据,也就是数组中的数据可以有多种数据类型.

2)数组的大小是可以动态调整的,可以随着数据的添加自动增长以容纳新增数据.

下面进入正题,来说说数组的基本操作

首先要操作数组,那么就要先创建数组


数组的创建

使用构造函数Array创建数组

var arr1=new Array(); //无参创建
var arr2=new Array(20);//指定数组大小
var arr3=new Array("red","green","blue");//指定数组中的数值


使用数组字面量表示法创建数组

var arr4=[];
var arr5=["red","green","blue"];
//和对象一样,在使用数组字面量表示法时,也不会调用Array构造函数(Firefox3以及更早版本除外)


:数组的属性length很特殊,可读可写,arr[arr.length]=”newvalue”;可用来在数组末尾添加新项

数组的检测方法

第一种,instanceof操作符,与全局环境有关

if(arr1 instanceof Array)
{
alert("是数组!");
}


第二种,Array.isArray()方法,支持的浏览器有IE9+,Firefox 4+,Safrai 5+,Opera 10.5+和Chorme,与全局环境无关.

if(Array.isArray(arr1))
{
alert("是数组!");
}


对于尚未实现这个方法的浏览器中检测数组如下方法:

function isArray(value) {
return Object.prototype.toString.call(value)=="[object Array]";
}


数组的转换方法

toLocaleString()方法

toStr
ae28
ing()方法 ,返回的是以逗号分割的字符串

valueOf()方法 ,返回的是数组

jon(“separator”),用separator构造包含所有数组的字符串

数组的栈方法

栈(后进先出)是一种可以限制插入和删除项的数据结构,其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。

push()方法,可接收任意数量的参数,把它们逐个添加到数组末尾,并返回修改后的数组长度.

pop()方法,从数组的末尾移除最后一项,减少数组length的值,然后返回移除的项.

arr3=arr3.push("yellow","yellow");//进栈
var item=arr3.pop();//出栈


数组的队列方法

队列(先进先出)是一种特殊的线性表,特殊之处在于它只允许在表的前端进行删除操作,而在表的后端进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。

shift()方法,移除数组中的第一项并返回该项,同时数组的长度减一(和push()配合使用可实现队列)

unshift()方法,在数组前端添加任意个项,并返回新数组的长度(和pop()配合使用可实现反队列)

数组的排序和重排序

重排序 reverse()方法,会改变原数组

排序 sort()方法

默认情况下,sort()方法按升序排列数组项,sort()方法会调用每个数组项的toString()转型方法,然后比较得到的字符串,以确定排列顺序.所以即使数组中的每一项是数值,sort()方法比较的也是字符串,所以数字排序需要稍微做一点改动.

数字正序排序

function sort(a,b) {
return a-b;//正序排序
}


数字反排序

function sort(a,b) {
return b-a;//反排序
}


注意:reverse()和sort()方法的返回值是经过排序之后的数组

数组的排序也可以不用默认的排序方法,可以使用常规的冒泡排序,选择排序以及插入排序和快速排序,js常用排序算法见本人博客地址:http://blog.csdn.net/codezha/article/details/72960251.

数组的常用操作方法

concat()方法,该方法会创建当前数组的副本,然后将接收到的参数添加到副本的末尾,最后返回新创建的数组.

1)无参调用的情况下,只复制当前数组并返回副本

2)如果传递的是一个或多个数组,该方法会将这些数组中的每一项添加到结果数组中.

3)如果传递的不是数组,这些值就被简单的添加到结果数组的末尾.

slice()方法,该方法能够基于当前数组的一个或多个项创建一个新数组,可接收一个或两个参数不会影响原数组.

1)在只有一个参数的情况下,slice()方法返回从该参数指定位置开始到当前数组末尾的所有项.

2)在有两个参数的情况下,slice()方法返回从起始位置到结束位置之间的项,但不包括结束位置的项.

注意:如果slice()方法的参数中有一个负数,则用数组长度加上该数来确定相应的位置,如果结束位置小于起始位置,则返回空数组.

splice()方法,该方法的主要用途是向数组的中部插入项

1)删除

可以删除任意数量的项,只需要指定两个参数:要删除的第一项的位置和要删除的项数.


例如:splice(0,3)会删除数组中的前两项.

2)插入

可以向指定位置插入任意数量的值,只需要指定三个参数:起始位置,要删除的项数和要插入的项数.


例如:

splice(0,2,”red”,”green”);

从数组的位置2开始插入字符串”red”和”green”

3)替换

可以向指定位置插入任意数量的项,且同时删除任意数量的项,插入的项数不必与删除的项数相等,只需指定三个参数:起始位置,要删除的项数和要插入的任意数量的项.

例如:

splice(2,1,”red”,”green”);

删除当前数组位置2的项,然后从位置2开始插入字符串”red”和”green”

注:

splice()方法始终都会返回一个数组,该数组中包含从原始数组中删除的项(如果没有删除任何项,则返回一个空数组)

位置方法

都接收两个参数:要查找的项和表示查找起点位置的索引

- indexOf() 从数组的开头向后查找

- lastIndexOf() 从数组的末尾向前查找

迭代方法

every():对数组中的每一项运行给定函数,如果该函数对每一项都返回true,则返回true.

filter():对数组中的每一项运行给定函数,返回该函数会返回true的项组成的数组.

forEach():对数组中的每一项运行给定函数,这个方法没有返回值.

map():对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组.

some():对数组中的每一项运行给定函数,如果该函数对任一项都返回true,则返回true.

归并方法

接收两个参数:一个在每一项上调用的函数和(可选的)作为归并基础的初始值

reduce() 第一项开始,遍历到最后一项

reduceRight() 最后一项开始,遍历到第一下项

注:支持的浏览器有IE9+,Firefox3+,Safaris,OPera 10.5和Chrome
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: