ES5数组方法
本文最后更新于:2023年3月30日 下午
2017-08-25 星期五 丁酉年 七月初四
【鸡年】戊申月 甲申日
宜:嫁娶 冠笄 祭祀 沐浴 普渡
忌:开市 动土 破土 安床 开仓
以下方法添加到了Array.prototype
对象上(isArray
除外)
indexOf
类似字符串的indexOf()
方法
stringObject.indexOf(searchvalue, fromindex)
1 |
|
lastIndexOf
类似indexOf()
方法(顺序相反)
forEach
Array在ES5新增的方法中,参数都是function类型,默认有传参(遍历的数组内容,对应的数组索引,数组本身)
1 |
|
forEach方法 遍历数组元素
1 |
|
forEach
除了接受一个必须的回调函数参数,还可以接受一个可选的上下文参数(改变回调函数里面的this
指向)(第2个参数)如果这第2个可选参数不指定,则使用全局对象代替(在浏览器是为window),严格模式下甚至是undefined
array.forEach(callback,[ thisObject])
map
映射(一一对应)[].map()
;基本用法跟forEach
方法类似:
array.map(callback,[ thisObject]);
但是callback需要有return值(如果没有,就像会返回undefined)
1 |
|
filter
过滤筛选(callback在这里担任的是过滤器的角色,当元素符合条件,过滤器就返回true,而filter则会返回所有符合过滤条件的元素)。
array.filter(callback, [ thisObject]);
指数组filter后,返回过滤后的新数组。用法跟map相似
1 |
|
every(且)
every(callback[, thisObject])
当数组中每一个元素在callback上被返回true时就返回true。
1 |
|
some(或)
some(callback[, thisObject])
只要数组中有一项在callback上被返回true,就返回true。
1 |
|
reduce(从左到右累加)
对数组中的所有元素调用指定的回调函数。
该回调函数的返回值为累积结果,并且此返回值在下一次调用该回调函数时作为参数提供。
1 |
|
reduceRight(从右到左累加)
reduce的作用完全相同,唯一的不同是,reduceRight是从右至左遍历数组的元素。
Array构造器上的isArray
Array.isArray
直接写在了Array
构造器上,而不是prototype
对象上。Array.isArray
会根据参数的[[Class]]内部属性是否是”Array”返回true或false.
1 |
|
Array.prototype.slice.call
真实数组具有slice
方法,可以对数组进行浅复制(不影响原数组),返回的依然是数组。
类似数组虽然有length
属性,可以使用for
循环遍历,却不能直接使用slice
方法,会报错!但是通过Array.prototype.slice.call
则不会报错,本身(类似数组)被从头到尾slice
复制了一遍——变成了真实数组!
将类似数组的对象(比如arguments)转换为真实的数组
Array.prototype.slice.call(arguments)