首页 > 解决方案 > 您将如何使用 lambda 简化这段代码?

问题描述

我正在学习 lambda。告诉我如何简化这个表达式?我只有一张地图,谢谢!

            array.map(value => {
                if (value.id !== 1) {
                    value.id -= 1;
                }
            });

标签: typescriptlambda

解决方案


您可以重构为 afilter()进行id检查和 aforEach()进行id修改,如下所示:

array.filter(v => v.id !== 1).forEach(v => v.id--);

我不确定这是否真的算作“简化”;它所做的只是将调用两步回调的单个方法转换为两个方法,每个方法调用一步回调。我会说哪个版本(如果有的话)更简单,这是一个见仁见智的问题。


但是,在任何一种情况下,您都可能希望使用forEach()而不是map(). 它们相似,但map()为原始数组的每个元素生成一个由回调的返回值组成的新数组,而forEach()只是调用回调并且不返回任何内容。由于您似乎不关心回调的返回值并且您不保存array.map()某处的结果,我建议forEach().

Playground 代码链接


推荐阅读