编辑代码

// 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)计算