// ES6高阶函数的使用
//map
//map对一个数组里面元素进行同一种操作callback需要return值,否则为undefined
// 注意: map() 不会对空数组进行检测。
// 注意: map() 不会改变原始数组。
// const arr = [1,2,3,4]
// const res = arr.map(item=>{
// return item*2
// })
// console.log(res)
//利用map方法方便获得对象数组中的特定属性值们
// const arr = [
// {name:'zhangsan',age:20},
// {name:'lisi',age:21},
// {name:'wangwu',age:22},
// ]
// const res = arr.map((item,index)=>{
// return item.name
// })
// console.log(res)
// const arr =[1,2,3,4,5,6]
// const res =arr.map((item,index)=>{
// console.log(index)
// console.log(item)
// return true
// })
// const arr = [
// {name:'zhangsan',age:20},
// {name:'lisi',age:21},
// {name:'wangwu',age:22},
// ]
// const res = arr.map((item,index,arr)=>{
// console.log(arr)
// return true
// })
// const arr=[1.1,2.2,3.3]
// const res = arr.map(item => parseInt(item))
// console.log(res)
//filter
//创建一个新数组
// const arr =[1,2,3,4,5,4,6]
// const res = arr.filter(item => item>3)
// console.log(res)
//筛选素数
// function get_sushu(arr){
// return arr.filter(item =>{
// var flag =true
// if(item<2){
// flag =false
// }else{
// for (var i=2;i<item;i++){
// if(item%i ==0){
// flag = false
// break
// }
// }
// return flag
// }
// })
// }
// 测试
// const arr =[]
// for (var i = 0;i<66;i++){
// arr.push(i)
// }
// const res =get_sushu(arr)
// console.log(res)
//reduce
// arr.reduce(callback,[initialValue])
// reduce 为数组中的每一个元素依次执行回调函数,
//不包括数组中被删除或从未被赋值的元素,
//接受四个参数:
//初始值(或者上一次回调函数的返回值),当前元素值,当前索引,调用 reduce 的数组。
// callback (执行数组中每个值的函数,包含四个参数)
//1、previousValue (上一次调用回调返回的值,或者是提供的初始值(initialValue))
//2、currentValue (数组中当前被处理的元素)
//3、index (当前元素在数组中的索引)
//4、array (调用 reduce 的数组)
// initialValue (作为第一次调用 callback 的第一个参数。)
// var arr = [1, 2, 3];
// var sum = arr.reduce(function(prev, cur, index, arr) {
// // console.log(prev, cur, index);
// // console.log(prev)
// // console.log(cur)
// // console.log(index)
// // console.log(arr)
// // console.log(cur)
// console.log(prev,cur)
// return prev + cur;
// })
// console.log(arr, sum);
//(1)数组求和
// const arr = [10, 20, 30]
// const res = arr.reduce( (pre,cur) => pre + cur)
// console.log(res)
//(2)每个对象指定属性的和??????没有执行出来
// const arr2 =[{a:1},{a:2},{a:3}]
// const res2 =arr2.reduce ( (pre,cur) =>{
// return pre + cur.a
// },'')
// console.log(res2)
// (3) 求数组项最大值
// const arr = [10, 20, 30]
// const res3 = arr.reduce( (pre,cur) => Math.max(pre,cur))
// console.log(res3)
// (4) 数组去重
// const arr =[1,2,3,4,5,4,2,2,21,1,6]
// const newArr = arr.reduce( (prev, cur) => {
// // prev.indexOf(cur) === -1 && prev.push(cur);
// // if(prev.indexOf(cur) ===-1 ){
// // prev.push(cur)
// // }
// prev.indexOf(cur) === -1?prev.push(cur):''
// return prev;
// },[]);
// console.log(newArr)
// (5)计算