面试题答案
一键面试假设用户对象数组为users
,以JavaScript为例实现如下:
const users = [
{name: 'Alice', age: 25},
{name: 'Bob', age: 35},
{name: 'Charlie', age: 40}
];
const result = users
.filter(user => user.age > 30)
.map(user => user.name.toUpperCase());
console.log(result);
这种方式提高代码复用率主要体现在:
filter
函数复用:filter
函数的逻辑是通用的,只需要传入不同的筛选条件函数,就可以应用于各种对象数组筛选场景。例如,如果要筛选出年龄小于20岁的用户,只需修改filter
的回调函数user => user.age < 20
,而filter
本身的实现无需改动。map
函数复用:map
函数同样具有通用性,当有对数组中每个元素进行某种转换的需求时,不管是对用户名字大写转换,还是对其他对象的某个属性进行特定计算等,只要传入对应的转换函数,map
函数就可以复用。
对于以后类似的筛选和转换需求,可以这样复用代码:
- 筛选复用:根据新的筛选条件,定义新的回调函数传递给
filter
。如筛选性别为男性的用户users.filter(user => user.gender ==='male')
。 - 转换复用:按照新的转换逻辑,定义回调函数传递给
map
。比如将用户年龄乘以2users.map(user => user.age * 2)
。