代码实现
const users = [{name: 'Alice', age: 25}, {name: 'Bob', age: 30}, {name: 'Charlie', age: 20}];
const result = users
.filter(user => user.age > 22)
.map(user => user.name.toUpperCase());
优化思路
- 使用
filter
和 map
方法:这两个方法清晰地表达了筛选和转换的操作意图。filter
方法用于筛选出符合条件(年龄大于22岁)的用户,map
方法用于将筛选后的用户名字转为大写。
- 链式调用:通过链式调用
filter
和 map
,代码更加简洁和可读,避免了中间变量的创建,减少了内存开销。
性能考量
- 减少中间变量:链式调用避免了创建额外的中间数组来存储筛选后的结果,从而减少了内存占用。如果使用传统的
for
循环,可能需要先创建一个新数组来存储筛选后的用户,然后再遍历这个新数组进行名字转换。
- 遍历次数:在链式调用
filter
和 map
的情况下,数组只被遍历两次(一次 filter
,一次 map
)。相比传统的嵌套 for
循环,在某些情况下,这种方式可以减少不必要的循环操作,提高性能。但如果数组非常小,这种性能提升可能并不明显,甚至可能因为函数调用的开销而略有下降。不过,在大多数实际场景中,这种链式调用的方式在代码可读性和性能之间取得了较好的平衡。