引用对象 [Array] 学习

159 阅读4分钟

引用对象- Array类型

创建数组:

1. 使用 Array 构造函数
var arrays = new Array() 或 Array() 
new Array(3) // 数组length = 3 ;
new Array('a','b','c') // 包含3个值得数组
    
2. 数组字面量(array literal)表示法
var arrays = [1,2,3] 或 ['1','2','3']
    
3. Array 构造函数还有两个 ES6 新增的用于创建数组的静态方法:from()和 of()。
from()用于将 类数组结构转换为数组实例,而 of()用于将一组参数转换为数组实例。

数组空位

使用数组字面量初始化数组时,可以使用一串逗号来创建空位(hole)。

数组索引

要取得或设置数组的值,需要使用中括号并提供相应值的数字索引

arrays[index] // index=0,1,2...

数组长度

arrays.length (不是只读的),arrays.length=2(只有2个值,超出为undefined),arrays.length='d'(在数组末尾添加‘d’)

检测数组

1.instanceof 操作符
value instanceof Attay

2.Array.isArray()方法
Array.isArray(value)

转换方法

1. arrays.toSring() : ['a','b','c']==> a,b,c

2. arrays.valueOf() : ['a','b','c']==> a,b,c

3. toLocaleString()

数组栈方法

访问栈数据结构-后进先出

1.在数组末尾插入,并返回修改后数组长度
arrays.push('d')

2.移除数组最后一项,并返回移除的项
arrays.pop()

数组队列方法

访问队列数据结构-先进先出

1.获取数组第一项并将其移除,数组长度减一
var item = arrays.shift()

2.在数组前端添加任意个项并返回数组长度
arrays.unshift('d','f')

数组重排序方法

1.reverse(),直接反转数组项的顺序
arrays.reverse()

2.sort()
arrays.sort()
默认情况下按升序排列数组项(调用每个数组项的toString()转型为字符串进行比较确定排序。)需要定义一个比较函数作为参数传给sort,function compare ==> arrays.sort(compare)。

数组操作方法:

1.【合并】 concat()方法基于当前数组中的所有项创建一个新数组。

arrays.coucat('a','b',['c','d']) // ['a','b','c','d']

2.【截取】 slice()方法基于当前数组中的一个或多个项创建一个新数组。

arrays.slice(1) // 截取原数组的第1位到末尾;
arrays.slice(1,4) // 截取原数组的第1位到第3位。
arrays.slice(-2,-1) //(-2+arrays.lenght, -1+arrays.lenght),负数参数要加上数组长度。

3.splice()方法主要用作向数组的中部插入项,返回一个包含从原始数组中删除的项的数组(如没有删除则为空数组)

  • [splice-删除]:可以删除任意数量的项,传2个参数(起始位置,删除的项数)
arrays.splice(2,3) // 从第2位开始删除3项	
  • [splice-插入]:向指定位置插入任意数量的项,传3个参数(起始位置,0,要插入的一个或多个项),
arrays.splice(1,0,'c','d') // 从第1位开始插入'c','d'。
  • [splice-替换]:向指定位置插入任意数量的项并且同时删除任意数量的项,传3个参数(起始位置,要删除的项数,要插入的任意数量的项)。
arrays.splice(2,1,'c','d') // 从第2位开始删除1项,再从第2位插入'c','d'。

数组位置方法:

1.indexOf() 从数组的开头(0)开始向后查找; 2.lastIndexOf()从数组末尾往前查找。 【共】传参:(查找的项,可选的起始位置),都返回要查找项在数组中的位置,如不存在则返回-1,第一个参数和数组每一项使用=== 全等于进行比较。

数组迭代方法

ES5定义了5个迭代方法,都传2个参数(要在每一项上运行的函数,可选的该函数的作用域对象--影响this的值)。传入这些方法的函数会接收3个参数(数组项的值,该项在数组中的位置,数组对象本身),var a=arrays.迭代方法(function(item,index,array){ })。都不会修改该数组中的包含的值。

  • 1.every(): 对数组中的每一项运行指定函数,如果罚函数队每一项都返回true(所有条件成立才行),则返回true。
  • 2.filter(): 对数组中的每一项运行指定函数,返回该函数会返回true的项组成的数组。
  • 3.forEach(): 对数组中的每一项运行指定函数,无返回值。
  • 4.map(): 对数组中的每一项运行指定函数,返回每次函数调用的结果组成的数组。
  • 5.some(): 对数组中的每一项运行指定函数,如果该函数对任一项返回true(至少一个条件成立即可),则返回true。

数组缩小方法

ES5中2个方法,都会迭代数组的所有项,然后构建一个最终返回的值。 都可以接受2个参数(在每一项调用的函数function,可选的所辖基础的初始值),第一个参数function接收4个参数(前一个值,当前值,项的索引,数组对象)==>var a=arrays.缩小方法(function(prev,cur,index,array){ })

  • 1.reduce(): 从数组第一项开始,逐个遍历到最后。
  • 2.refuceRight(): 从数组的最后一项开始,向前遍历到第一项。