数组构造器。创建指定长度的数组;用填充物填充,默认为0;当初始值为数值时可以指定步长,即比上一元素多多少
注意区别于原生Array,如Array.isArray(),Array.from()等
去重。不改变原数组,返回去重后的数组。
对数组进行for循环,同步执行。表达式执行环境有当前循环的元素$x、下标$i、上层数据$p。
for()和excs()里可以使用break()函数终止循环。break()也只能终止这两个函数。
原生forEach的重写,异步执行。也是对数组进行循环,但不等待异步函数的执行结果。
原生map的重写。
原生filter的重写。
原生find的重写。
原生findIndex的重写。
原生findLastIndex的重写。
原生every的重写。
原生some的重写。
原生reduce的重写。
把当前循环的元素$x、下标$i、上次累加结果$acc、上层数据$p传给表达式;初始值默认为0。
原生sort的重写,直接改变原数组顺序。
A. 无表达式时同原生sort
B. 把表达式作为对象获取路径来取得值,根据取到的值来排序。前面加个负号-可以反序排序。
C. 如果表达式包含$a和$b字样则把上一个元素$a与当前元素$b传给表达式,由表达式的执行结果来排序
D. 如果表达式表达式是个数组,则先取出表达式的第一个项来排序,如果比较结果为0(即相等)就继续取下一个表达式继续排序。每个表达式可以是B那样带有负号-的路径,也可以是C那样包含$a和$b的表达式。
如果想把空值(" ", undefined, null)排在后面,可以再传入一个布尔参数。A是第一个参数,C由表达式控制而无效。
更多原生数组函数可参考MDN文档
除了sort(),每个函数里的表达式执行环境都有$x、$i、$p,而reduce()还有$acc。
只有for()循环是同步执行的,即只有for里面的表达式才会等待异步函数/耗时任务(网络请求/数据库操作等)的执行结果,其它数组函数都是异步