《JavaScript高级程序》笔记,包含数组的创建、检测以及数组方法。
创建方式
- 构造函数
var arr = new Array(1,2,3)
- 字面量方式
var arr = [1,2,3]
继承Object
以下方法原始值由Array对象派生的所有对象继承。
toSource()
: 返回该对象的源代码。仅Gecko 核心的浏览器支持。toString()
: 把数组转换为字符串,并返回结果toLocaleString()
: 把数组转换为本地数组,并返回结果valueOf()
: 返回数组对象的原始值
检测数组
es3方法value instanceof Array
,仅用在单一全局执行环境。
es5方法Array.isArray(vlaue)
,不限环境,需要ie9+及以上版本支持。
不会改变原始数组
concat()
连接两个或更多的数组,并返回结果。
arrayObject.concat(arrayX,arrayX,……,arrayX)其中arrayX
可以是数组也可以是具体值。
1 | var a = [1,2,3], |
join()
把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔。
arrayObject.join(separator),其中separator
可选。指定要使用的分隔符。如果省略该参数,则使用逗号作为分隔符。
1 | var arr = ['h','e','l','l','o']; |
slice()
从某个已有的数组返回选定的元素。
1 | var arr = ['h','e','l','l','o']; |
改变原始数组
pop()
删除并返回数组的最后一个元素。
1 | var arr = ['h','e','l','l','o']; |
push()
向数组的末尾添加一个或更多元素,并返回新的长度。
1 | var arr = ['h','e','l','l','o']; |
shift()
删除并返回数组的第一个元素。
1 | var arr = ['h','e','l','l','o']; |
unshift()
向数组的开头添加一个或更多元素,并返回新的长度。
1 | var arr = ['h','e','l','l','o']; |
sort()
对数组的元素进行排序。返回对数组的引用。在原数组上排序。
arrayObject.sort(sortby),其中sortby
可选。规定排序顺序。必须是函数。
1 | var arr = [2,4,7,9,1,10]; |
splice()
删除元素,并向数组添加新元素。返回删除项的数组。
arrayObject.splice(index,howmany,item1,…..,itemX),其中index
,必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。howmany
,必需。要删除的项目数量。如果设置为 0,则不会删除项目。item1,.....,itemX
,可选。向数组添加的新项目。
1 | var arr = ['h','e','l','l','o']; |
es5的五种数组迭代方式
every()
:对数组中每一项运行给定函数,如果该函数对每一项都返回true,则返回true。filter()
:对数组中每一项运行给定函数,返回该函数会返回true的项组成的数组。forEach()
:对数组中每一项运行给定函数,这个方法没有返回值。map()
:对数组中每一项运行给定函数,返回每次函数掉用的结果组成的数组。some()
:对数组中每一项运行给定函数,如果该函数对任一项返回true,则返回true。
备注:以上方法都不会修改数组中的值。
1 | var numbers = [1,2,3,4,5,4,3,2,1]; |
IE9+、FireFox2+、Safari3+、Opera9.5+ 和Chrome兼容。
es5缩小方法
reduce()
和reduceRight()
,都会迭代数组所有项,构建一个最终返回的值,第一个是从头到尾迭代,第二个是从尾到头。
参数两个[callback, initialValue]
initialValue
:可选参数, 作为第一次调用 callback 的第一个参数callback
:function(previousValue,currentValue,currentIndex,array){}previousValue
:上一次调用回调函数返回的值,或者是提供的初始值(initialValue)currentValue
:数组中当前被处理的元素currentIndex
:当前被处理元素在数组中的索引, 即currentValue的索引.如果有initialValue初始值, 从0开始.如果没有从1开始array
:调用 reduce 的数组
1 | var value = [1,2,3,4,5]; |