← 全部文章

技术与生活 / 一篇记录

筛选和转换,拆开之后更容易检查

filter 的回调决定是否保留,map 的回调决定输出值。拆成清晰阶段后,可以分别观察每一步的输入和输出,更容易定位条件错误或类型变化。

map 转换每个元素,filter 根据条件保留元素,组合后能清晰表达处理流程。

实际怎么检查

以下示例可在现代浏览器的开发者工具中观察;涉及 DOM 的代码需要在网页环境运行。

console.log([1, 2, 3].filter(n => n > 1).map(n => n * 2));

示例结果应为 4 和 6,并测试空数组。

遇到异常再检查什么

先验证筛选数量,再核对转换后的值。如果数组很大,组合处理会创建中间结果;是否改为一次遍历,应以实际性能需求而不是代码长短决定。

数组方法也可能接收到非预期输入。接口字段缺失时,应先检查它确实是数组。直接在 undefined 上调用 filter,会把数据边界问题表现为另一个看似无关的方法调用异常。

不要把 map 当作仅执行副作用的循环。

参考:JavaScript 文档。

搜索文章

输入关键词,找回一篇记录。