简单归纳一下数组的概念和用法
概念
在window全局对象的哈希表中,存在标准库和非标准库。其中标准库中的数组,就是今天介绍的重点。简单对比一下,常用的类似于String()
boolean()
Number()
,这三个都是使用临时调用的方式,使用标准库中的属性,而Array()
的用法则是和Object()
一样,返回的是一个对象,只不过Array()
会比Object()
在原型链上多一个数组的原型。另外Array()
也可以写成new Array()
,他们是完全等价的。
表现形式
数组的表现形式是[]
,数组中他们的key是从0开始的自然数序列,并且最后是有一个length的属性,length的value是由数组中的属性个数决定的。
定义
数组是一种原型链中包含Array prototype的对象
用法
var a = Array(arguments)
var a = new Array(arguments)
-
var a = []
需要注意的是前两种方式都是使用全局对象声明的方式,在这两种方式中参数(arguments)的数量不同,会导致一些意向不到的结果。假如arguments的数量多于1,则和第三种方式一样
但如果arguments的数量为1个时,用前面两种方式生成的数组内部并非是一个value为3的key,而是length为3,有三个空value在其中。而第三种方式仍然很正常。
Array和function的关系,Array和Objec的关系
Array和函数都属于对象,各自有各自的原型。
array是Object一种,Array不仅有object的原型,而且也有自身特有的原型。
伪数组
伪数组就是看起来像数组的对象,有着数组很多相似之处,但是却没有数组的原型。因此,凡是必须调用数组原型的才能使用的方法,伪数组都无法使用。
常用的数组API
Array.forEach(function(value,key){})
- forEach前面必须是数组,()里面必须是函数,value和key缺一不可
- 这个API的作用是,给每一个
key:value
执行一遍函数
Array.sort(function(value1,value2){return a-b})
- value1和value2是数组的前面两个value,a和b分别是value1,value2对应的两个值
-
这个API的作用是,根据a-b的值来快速排序原数组,顺序可以用a-b/b-a来确定升序或者降序。
Arry.join('any')
- 括号里的必须是字符串
-
这个API的作用是,在每一个value之间插入字符串,并最后返回字符串。
Array.concat( another Array)
- ()里面必须是一个数组,可以是空数组
- 这个API的作用是,让两个数组合并成一个新数组
-
当()里是空数组时,相当于拷贝原数组,生成一个新数组
Array.map(funciton(value,key){})
-
用法和forEach相同,并且会返回最后的结果。
Array.filter(function(value,key){return 判断条件})
- return 后面接的是条件判断表达式
- 这个API的作用是,让符合条件到value筛选出来
7 .Array.reduce(function(返回值,当前的value){},init)
- init是指返回值的初始值
- 返回值是指上一次运算的结果
- 当前的value是指当前循环中value值
-
这个API的作用是,让循环中的每一个value进行{}里面的代码。