- Array.forEach(function(x,y){}) 接收一个函数,函数不传参数,没有返回值,也就是undefined
//可以给数组传一个函数,这个函数必须接收两个参数
前边是value,后边是key。
var a = [0:'c',1:'d'];
a.forEach = function(x){
for(let i=0; i<a.length; i++){
x(this[i],i)
}
}
//a.forEach是遍历数组a,数组a根本没有传入,怎么遍历呢?
因为this的原因,其实点前的数组a已经传入了,多以能a.forEach.
a.forEach( function(value,key){
console.log(value,key)
})
// c 0
// d 1
- Array.sort(function(x,y){}) 排序数组(比较特殊:不会生成新数组,改变了原数组)
.sort必须接收一个函数,函数必须接收两个参数
// 数组排序:我们知道最快的是通排序,因为桶排序有弊端,需要很多桶,js不知道需要多少桶,一般都会用快速排序。
a = [ 5,6,8,4,2]
a.sort() //默认排序
a
//[2,4,5,6,8]
//浏览器不知道我们需要升序还是降序排序,所以需要告诉浏览器方向,需要用一个函数,函数必须接收两个参数。参数作对比,前边小就是升序,前边大就是降序。
a.sort( function(x,y){ // x是2,y是4,x-y是负数,这样是升序
return x-y //升序
})
//[2,4,6,8]
a.sort(function(x,y){ // x是2,y是4,y-x是正数,这样是降序
return y-x //降序
})
//[8,6,4,2]
深度截图_选择区域_20180312144947.png
- Array.join() 合起来连接,默认传参逗号连接
//可以在数组两个值(key:value)之间插入一些元素来连接成一个字符串
如果join()不给参数,默认逗号连接的来的字符串。调用了String方法。
深度截图_选择区域_20180312145322.png
- Array.concat 联结合并
- 联结两个数组,两个数组都不会变化,重新生成一个新数组
- 特殊用法:利用它可以生成新的数组(a.concat([]) 生成一个空数组)来复制数组,值还是前者数组的值,因为是两个数组,所以不相等。
特殊用法:因为生成了一个新的数组,值还是前者的值,但是跟之前的数组不相等
- Array.prototype.map 类似forEach
// 类似forEach,除了遍历这个数组之外,它有返回值,并将这个函数对数组操作的结果收集起来。
箭头函数表示:a.map(value => value * 2)
深度截图_选择区域_20180312152354.png 深度截图_选择区域_20180312151822.png
-
Array.prototype.filter 过滤
深度截图_选择区域_20180312153241.png
和map组合使用
-
Array.reduce (遍历数组) 接收一个函数和一个初始值0,函数两个参数(sum,n)sum第一个,n下一个,可以代替map和filter
比如一个人打劫,被打劫的第一个人就是sum,下一个是n,每次sum+n作为下一个sum,继续sum+n,这样打劫到最后一个人就知道结果打劫了多少钱了。
-
Array.reduce (遍历数组) 接收一个函数和一个初始值0,函数两个参数(sum,n)sum第一个,n下一个,可以代替map和filter
-
map可以用reduce表示
声明一个数组
reduce遍历数组,并传入一个函数和一个空数组,函数接收两个参数,一个是arrar,一个是n,arr是上一个的数组,n是新的数字。
深度截图_选择区域_20180312155858.png
网友评论