MST

星途 面试题库

面试题:JavaScript中高阶函数如何提高代码复用率 - 自定义高阶函数设计

设计一个自定义的高阶函数`batchOperation`,它接受一个操作函数数组和一个数据数组作为参数。对数据数组中的每个元素,依次应用操作函数数组中的每个函数。例如,`batchOperation([function (num) { return num * 2; }, function (num) { return num + 1; }], [1, 2, 3])`应该返回`[3, 5, 7]`。解释这个自定义高阶函数是如何提高代码复用率的,在不同的业务场景下,如何通过复用这个函数来处理相似的数据操作逻辑。
24.9万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试
function batchOperation(operationFuncs, dataArray) {
    return dataArray.map(data => {
        return operationFuncs.reduce((acc, func) => {
            return func(acc);
        }, data);
    });
}

提高代码复用率的方式

  1. 分离关注点:将数据操作的具体逻辑(操作函数数组)与数据本身(数据数组)分离开。这样,对于不同的操作逻辑,只需要调整操作函数数组,而数据处理的框架(batchOperation函数)可以保持不变。
  2. 通用框架batchOperation函数提供了一个通用的框架,适用于任何需要按顺序对数据进行一系列操作的场景。无论操作是数学运算、字符串处理还是其他类型的处理,只要能用函数表示,都可以复用这个函数。

在不同业务场景下的复用

  1. 数学运算场景:除了上述示例中的乘2加1操作,还可以是更复杂的数学运算组合,如先开平方再取对数等。通过改变操作函数数组,就可以处理不同的数学运算需求。
  2. 字符串处理场景:例如,先将字符串转换为大写,再在末尾添加特定字符。可以定义操作函数数组[function(str) { return str.toUpperCase(); }, function(str) { return str + '!' }],并结合相应的字符串数据数组调用batchOperation函数。
  3. 数据格式化场景:在处理用户输入数据时,可能需要先去除前后空格,再进行类型转换等操作。同样可以通过定义合适的操作函数数组,复用batchOperation函数来处理。