var arr =[1,2,3,4,5];// 判断元素在数组中是否存在
console.log(arr.includes(7))// falseconstLEFT="left",TOP="top",RIGHT="right",BOTTOM="bottom";var direction =""
window.addEventListener("keydown", keyHandler);functionkeyHandler(e){if(![37,38,39,40].includes(e.keyCode))return;switch(e.keyCode){case37:
direction =LEFT;break;case38:
direction =TOP;break;case39:
direction =RIGHT;break;case40:
direction =BOTTOM;break;}}
reduce
// 归并// reduce(函数,初始值)// 函数(value,item,index,arr)// 如果没有初始值,就把数组的第0项作为value值,并且从第一项开始遍历// 如果有初始值,value就是初始值,并且从第0项开始遍历// 在使用reduce是,return返回的结果将作为下次遍历时的value值// value 有初始值 就是初始值 没有初始值 就是数组的第0项// item 数组内的数据数值// index 索引下标// arr 这个数组
reduce的累加效果
var arr =[1,2,3,4,5];var sum = arr.reduce(function(value,item,index,arr){return value + item
},100)
console.log(sum)// 115
reduce的push
var arr =[1,2,3,4,5];var sum = arr.reduce(function(value,item){if(!Array.isArray(value)){
arr[arr.length]= value
return arr
}return value
},6)
console.log(sum)// [1, 2, 3, 4, 5, 6]
reduce的map
var arr =[1,2,3,4,5];var arr1 = arr.reduce(function(value,item){
value.push(item +10)return value
},[])
console.log(arr1)// [11, 12, 13, 14, 15]
reduce的some和every
some
var arr =[1,2,3,4,5]var bool = arr.reduce(function(value,item){if(item <3) valur =truereturn value
},false)
console.log(bool)// true
every
var arr =[3,4,5,6,7]var bool = arr.reduce(function(value,item){if(item <3)returnfalsereturn value
},true)
console.log(bool)// true
reduce的filter
var arr =[3,4,5,6,7,8];var arr1 = arr.reduce(function(value,item){if(item >3) value.push(item)return value
},[])
console.log(arr1)// [6, 7, 8]
reduce的find和findIndex
find
var arr =[{id:1001,name:"商品1",price:1000,del:false},{id:1001,name:"商品2",price:1200,del:false},{id:1001,name:"商品3",price:1600,del:false},{id:1001,name:"商品4",price:1300,del:true},{id:1001,name:"商品5",price:1800,del:true},]var item = arr.reduce(function(value item){if(item.price ===1600) value = item
return value
},null)
console.log(item)// {id: 1001, name: '商品3', price: 1600, del: false}
findIndex
var arr =[{id:1001,name:"商品1",price:1000,del:false},{id:1001,name:"商品2",price:1200,del:false},{id:1001,name:"商品3",price:1600,del:false},{id:1001,name:"商品4",price:1300,del:true},{id:1001,name:"商品5",price:1800,del:true},]var index = arr.reduce(function(value,item,index){if(item.price ===1600) value = index
return value
},-1)
console.log(index)// 2
利用reduce书写一个随机颜色
var color =Array(6).fill(1).reduce(function(value){return value + Math.floor(Math.random()*16).toString(16)},"#")
console.log(color)// #随机颜色
利用reduce动态渲染页面的小案例
<ul></ul>
var arr =[{site:"网易",url:"http://www.163.com"},{site:"腾讯",url:"http://www.qq.com"},{site:"淘宝",url:"http://www.taobao.com"},{site:"淘宝",url:"http://www.taobao.com"},{site:"京东",url:"http://www.jd.com"},{site:"百度",url:"http://www.baidu.com"},]
document.querySelector('ul').innerHTML = arr.reduce(function(value,item){return value +`<li><a href = "${item.url}"> ${item.site} </a></li>`},"")
利用reduce来判断字符串字符出现的次数
var str ="asdasdasffdgasasdasfgdfasd"var o = str.split("").reduce(function(value,item){if(!value[item]) value[item]=0
value[item]++return value
},{})
console.log(o)// {a: 7, s: 7, d: 6, f: 4, g: 2}