浅谈 JavaScript 中 Array 类型的方法使用

前言:Array 类型是 JavaScript 中除了 Object 类型之外最经常使用的类型。前端

 

1、建立数组数组

JavaScript 中的数组与其余语言中的数组有着很大的区别。例如Java、PHP等语言中的数组都是一组有序的数据,而 JS 中的数组能够包含多种类型的数据。数据结构

建立方式:框架

  1. Array 构造函数定义数组 ---------- var 数组名 = new Array();函数

var colors = new Array(20);   //直接传递数组数量,length 值为20,即建立一个包含20项的数组。

var colors = new Array("red","blue","green"); //传递数组中包含的项,即建立一个包含3个字符串的数组。

var
colors = Array(20); //也能够省略 new 操做符,结果相同。

  2. 字面量方式定义数组 ---------- var 数组名 =  [ ];spa

var values = [];  //定义了一个空数组
var values = [1,2,3] //定义了一个包含3项的数组

JS 中的数组能够随着数据的增长调整大小,例如:code

var colors = ["blue","green","black"];        //建立一个包含三个字符串的数组
colors[colors.length] = "brown"; //(在位置3)添加一个字符串

colors[99] = "red"; //(在位置99)添加一个字符串 ,但位置4到98之间其实是不存在,返回的都是undefined
console.log(colors.length); //100

 

2、检测数组对象

自从 ECMAscript3 作出规定后,就出现了一个经典问题 ------- 确立某个对象是否是数组。blog

1. 对于一个网页或者一个全局做用域内,使用 instanceof 操做符。排序

* 但若是网页中包含多个框架,那么就存在两个或以上不一样的全局执行环境,这种方法就不适用。

2.判断某个值是否是数组,不考虑是在哪一个全局做用域内建立的,使用 Array.isArray() 方法。

 

3、转换方法

全部对象都有 toString() 方法、toLocalString()方法、valueOf()方法。

  toString() :将数组中的值转换成用逗号分隔的字符串。

  toLocalString():将数组中的值转换成本地数组。

  valueOf():返回数组的原始值。

 

4、栈方法

JS 的数组中也提供了一种让数组的行为相似于其余数据结构的方法,也就是数组能够表现的像栈同样。

 栈是一种LIFO(后进先出)的数据结构,能够限制数据的插入和移除。而数据的插入和移除都发生在栈的顶部。  

ECMAscript 为数组提供了 push()和 pop()方法。

push() 方法能够接受任意数量的参数,并将他们添加至数组的末尾,并返回修改后的数组长度。

pop() 方法能够从数组的末尾移除一项,减小 length 值,并返回移除的项。

 

5、队列方法

队列数据结构的访问规则是 FIFO(先进先出),队列在列表的末端添加项,在列表的前端移除项。

因为 push()方法是从数据的末端添加项,所以只需一个从数据的前端取得项的方法便可,而实现这一操做的方法就是shift()方法。

此外,还有一种方法 unshift(),是从数组的前端添加项并返回新数组的长度。

unshift()和 pop()方法同时使用,能够从相反的方向模拟队列,即从数组的前端添加项,从数组的末端移除项。

 

6、 重排序方法

顾名思义,就是对数组进行从新排序,且数组中已经存在这样的两个方法,即 reverse()方法和 sort()方法。

reverse()方法是直接反转数组的顺序,但始终是不太灵活的。

sort()方法则会调用每一个数组项的 toString()转换方法,比较转换来的字符串进行排序,但也不是最佳方案,好比转换成字符串的“5”就比“10”大,也不符合常理。

以上方法单独使用都不是最优解,所以能够用 sort()方法接收一个比较函数作为参数,以便于指定哪一个值在前哪一个值在后。

 

7、操做方法

ECMAscript 为数组中已存在的项提供了很对操做方法。

1. contact():为当前数组建立一个副本。若是给 contact 方法传递参数,将接收到的参数添加至数组的末尾,最后返回一个新数组。(原来的数组保持不变)

                    若是没有传递参数,则只复制数组并返回副本。

2. slice():基于当前数组的一项或多项建立一个新数组。语法:slice(返回项起始位置项,结束位置(但不包含结束位置的项));若是只有一个参数,则返回该项到数组末尾的全部项。(原数组不变)

      !!!若是传入的参数中有一个负数,则用数组长度加上该数来肯定相应的位置;若是结束位置小于起始位置,则返回空数组。

3. splice():在数组的中部插入项。

       • 删除:删除任意数量的数 ------ 数组名.splice(删除的起始项的索引位置,要删除的项数)

       • 插入:从指定位置插入项 ------ 数组名.splice(起始索引位置,0(要删除的项数),要插入的项)

       • 替换:从指定位置插入项 ------ 数组名.splice(起始索引位置,要删除的项数,要插入的项)

 

8、位置方法

用于返回要查找的项在数组中的位置,或者在没找到的状况下返回-1。

indexof():从数组的开头(位置0)向后查找。

lastIndexOf():从数组的末尾开始先前查找。

相关文章
相关标签/搜索