柯理化和扁平化的区别

柯里化是一个函数式编程的概念,它指的是将接收多个参数的函数转化为接收单个参数并返回新函数的过程,新函数接收剩余参数并返回最终结果的过程。柯里化的本质是降低了函数的通用性,提高了函数的特殊性,这样就可以根据不同的参数组合创建不同的函数

function add(a, b, c) { return a + b + c;}
const curriedAdd = (a) => (b) => (c) => a + b + c;
console.log(add(1, 2, 3));         // 6 
console.log(curriedAdd(1)(2)(3));         // 6
const addOne = curriedAdd(1);
console.log(addOne(2)(3));         // 6

首先定义了一个接收三个参数的函数add。然后我们使用柯里化的方式将它转化为一个嵌套的函数(使用箭头函数也可以实现),然后依次传入参数 a, b, c。我们也可以只传入部分参数,比如首先传入参数 a,返回 b 和 c 的函数,然后再分别传入 b 和 c。这就是柯里化的特性。

扁平化指的是将一个嵌套的数组或对象转化为一个一维数组或对象。一个常见的应用场景是,当我们需要对一个多维数组进行遍历操作时,在处理数据之前需要将这个数组转化为一维数组。

const arr = [1, [2, [3, 4]]];
const flattenedArr = arr.flat(2); 
console.log(flattenedArr);         // [ 1, 2, 3, 4 ]

我们有一个嵌套的数组arr,其中包含了多个子数组。我们使用了flat方法将这个数组进行了扁平化处理,该方法接收一个可选的参数用于指定想要扁平化的层数,而无参数的时候默认为一层,这里使用了2层扁平化。最终输出的结果是一个扁平化的一维数组,包含了原先数组中所有的元素。 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值