面试题答案
一键面试function batchOperation(operationFuncs, dataArray) {
return dataArray.map(data => {
return operationFuncs.reduce((acc, func) => {
return func(acc);
}, data);
});
}
提高代码复用率的方式
- 分离关注点:将数据操作的具体逻辑(操作函数数组)与数据本身(数据数组)分离开。这样,对于不同的操作逻辑,只需要调整操作函数数组,而数据处理的框架(
batchOperation
函数)可以保持不变。 - 通用框架:
batchOperation
函数提供了一个通用的框架,适用于任何需要按顺序对数据进行一系列操作的场景。无论操作是数学运算、字符串处理还是其他类型的处理,只要能用函数表示,都可以复用这个函数。
在不同业务场景下的复用
- 数学运算场景:除了上述示例中的乘2加1操作,还可以是更复杂的数学运算组合,如先开平方再取对数等。通过改变操作函数数组,就可以处理不同的数学运算需求。
- 字符串处理场景:例如,先将字符串转换为大写,再在末尾添加特定字符。可以定义操作函数数组
[function(str) { return str.toUpperCase(); }, function(str) { return str + '!' }]
,并结合相应的字符串数据数组调用batchOperation
函数。 - 数据格式化场景:在处理用户输入数据时,可能需要先去除前后空格,再进行类型转换等操作。同样可以通过定义合适的操作函数数组,复用
batchOperation
函数来处理。