js中数组的基本操作

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()方法
  • toString()方法 ,返回的是以逗号分割的字符串
  • 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值