刚才某人问了我一个问题。map
怎么遍历,我刷刷刷就是一顿写。遍历么,forEach
么,妥妥的。数组
var map = new Map(); map.set('item1', 'value1') map.set('item2', 'value2') map.forEach(function(value, key, map) { console.log("Key: %s, Value: %s", key, value); });
好吧,我写完了以后,他发给我了一句话。[].forEach()
改为[].map()
怎么用?函数
what?我这个暴脾气。。。。我固然是详细的说一下Array
的常规遍历方法以及场景了。this
var new_arr = arr.filter(callback(element, index, array){ }, this)
callback 回调 element 当前的value index 当前的索引值 array arr这个数组对象 this 回调的this指向
Array 类型 //符合条件的值组成的数组
//若是返回值是true的话,就是符合条件。 //filter 不会改变原数组,它返回过滤后的新数组。 //这个里返回数组里面的偶数 [10,11,12,13].filter((v)=>v % 2 == 0) //只要审核经过的。固然正常状况下,对象比这个复杂一些。 [{state:1},{state:0},{state:0},{state:0}].filter((v)=>v.state == 1) //只要成年人,记录是有效的 [{age:18,state:1},{age:16,state:0},{age:21,state:0}].filter((v)=>v.state == 1 && v.age > 17)
场景就是过滤,把符合条件的整理到一块儿,常见的就是展现审核经过的数据,只显示关注个人人,只显示妹子,对吧糙汉子就过滤不看了。code
arr.forEach(callback(element, index, array){ }, this)
callback 回调 element 当前的value index 当前的索引值 array arr这个数组对象 this 回调的this指向
undefined // 这个东西没有返回值
//遍历数组。打印到控制台 [10,11,12,13].forEach((v)=>{ console.log(v) }) // 成功的收集到success里面,错误的收集到error里面。 var success = [],error = []; [{state:1},{state:0},{state:0},{state:0}].forEach((v)=>{ if(v.state == 1){ success.push(v) }else{ error.push(v) } }) // 给20岁的小姐姐打招呼 [{state:1,age: 1},{state:0,age: 20},{state:0,age: 19},{state:0,age: 31}].forEach((v)=>{ if(v.age == 20){ console.log('你好啊,我今年正好80') } })
好比说绑定事件,好比判断值而后push
到不一样的地方对象
arr.map(callback(element, index, array){ }, this)
callback 回调 element 当前的value index 当前的索引值 array arr这个数组对象 this 回调的this指向
array 数组 // 每一个回调的返回值组成的新数组
//把数值格式化,保留两位小数 [10.055,11.054,12.056,13.789].map((v)=>+v.toFixed(2))
这个通常就用在,我须要一组值,可是这个值不对,须要计算原数组来生成。排序
arr.reduce(callback(accumulator, element, index, array){ }, initialValue)
callback 回调 sum 累加器的返回值,也就是上一次回调的返回值 element 当前的value index 当前的索引值 array arr这个数组对象 initialValue 初始传入的值,若是不传回调从下标1开始,下标0做为初始值
//返回最后一次回调的值
//累加 [10,11,12,13].reduce((s,v)=>s+v,0)
这个计算整个数组得出一个值的索引
forEach没有返回值,重点是function里面处理逻辑
map有返回值,重点是function返回值,组成新数组
filter有返回值,重点是function返回值,过滤以后组成新数组
reduce有返回值,重点是计算数组,返回一个值事件
昨天晚上下班着急跑路,还差一些例子没往上整理,今天补上element
你们能够尝试写写,有好的例子能更好的说明函数的做用也能够在评论区提出来,有好的解决方案也能够写出来。get
[{name: 'l1', phone: '1507539'},{name: 'l2', phone: '1507540'},{name: 'l3', phone: '1507541'},{name: 'l4', phone: '1507538'}] .sort((n,m)=>n.phone<m.phone) .map(m=>m.name) .join(',')
[].slice.call(document.querySelectorAll('div')) .forEach(v=>v.addEventListener('click',e=>console.log(e.target.className)))
[].slice.call(document.querySelectorAll('*')) .map(v=>v.className) .filter(v=>v)