函数式编程

简介:
重点是需要做什么?而不是如何描述,比如遍历数组并打印.
小案例:

// 1.遍历
let forEach = function (array, action) {
    for (let index = 0; index < array.length; index++) {
        action(array[index])
    }
}
// 2.打印
let logItem = function (item) {
    console.log(item)
}

// 3.使用(写好以后,我们只需要执行这一句代码即可)
forEach([1, 2, 3, 5], logItem)

找出数组中的最小数
普通方法:

	let findMinArray = function (array) {
    let minValue = array[0]
    for (let index = 0; index < array.length; index++) {
        if (minValue > array[index]) {
            minValue = array[index]
        }

    }
    return minValue;
}
findMinArray([8, 6, 4, 5, 9])//4

使用Math.min函数

const minValue = function (array) {
    return Math.min(...array);

}
minValue([8, 6, 4, 5, 9])//4

上述方法简写

const minValue = array => Math.min(...array)
minValue([8, 6, 4, 5, 9]);

函数式编程的工具箱,map,fillter,reduce方法运用

map使用

案例:把一个数据集合转成另一个数据集合
准备好数组

let daysWeek = [
  {
    name: 'Monday',
    value: '一'
  },
  {
    name: 'Tuesday',
    value: '二'
  },
  {
    name: 'Sunday',
    value: '日'
  }
]

过滤value值,普通方法

let weekValue = []
daysWeek.forEach(element => {
    weekValue.push(element.value)
})
console.log(weekValue) //["一","二","日"]

map使用:(就一句话)

console.log(daysWeek.map(v => v.value));
fillter使用

案例:打印大于0的数组集合
let arr = [-1, 1, 2, -2]
普通方法

let fillterNumber = function (array) {
    let newArr = []
    array.forEach(element => {
        if (element > 0) {
            newArr.push(element)
        }
    });
    return newArr;
}
console.log(fillterNumber(arr));//[1,2]
fillter方法使用:(里面就一句话)
let fillterNumber = function (array) {
    return array.filter(v => v > 0)
}
console.log(fillterNumber(arr)); //[1,2]
reduce方法使用:在数组中用来求值操作

reduce常规运算

let sum = function (array) {
    return array.reduce((a, b) => a * b);
}
console.log(sum([1, 2]));//2

reduce多个数组的合并:非常灵活

let mergeArray = (...array) => [].concat(...array);

console.log(mergeArray([1, 2, 3], [4, 5, 6], [7, 8, 9]));//[ 1, 2, 3, 4, 5, 6, 7, 8, 9 ]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值