柯里化是一个函数式编程的概念,它指的是将接收多个参数的函数转化为接收单个参数并返回新函数的过程,新函数接收剩余参数并返回最终结果的过程。柯里化的本质是降低了函数的通用性,提高了函数的特殊性,这样就可以根据不同的参数组合创建不同的函数
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层扁平化。最终输出的结果是一个扁平化的一维数组,包含了原先数组中所有的元素。