摘要:当然也可以在外部定一个数组,然后处理后的数据到新数组来实现我们的目标,但整体看起来依然不是很优雅。
众所周知,在我们的日常编码里,对于一些数据的迭代以及遍历,首先想到的是for循环
这没毛病,for循环编写语法很简单,只需要知道数据列表的长度即可进行遍历取值,举个例子:
有点编程基础的童鞋,都可以很快想到上面的编写方法。那不知道大家是否会跟我一样对于写for循环时,功能是没毛病,但编写起来总会觉得很不优雅,例如还要定义对应的i变量(拿上述举例)以及还要自主控制i变量的变化,这样无疑会变得繁琐起来,也会让我们编写代码效率有所下降
好了,那我们有没有一些优雅的方法处理上述案例呢?答案是肯定的,这就回到这篇文章的主题:如何优雅地改善for循环
ForEach相信学过ES6的童鞋,很快就会想到这种方法,下面我就拿上面的例子改造一下:
这种方式,看起来优雅了许多,省去了不必要的队列长度对比变量的定义和控制以及队列长度判断
到这里,ForEach是不是就是最好的优雅方案?有没有存在问题?,相信一部分童鞋未必能答出来,那我就不卖关子了。如果我们遇到一种情况,就是对列表遍历处理后,需要返回一个处理后的数组,那我们继续使用forEach是否能够达到我们的目的呢?我们也许会有以下做法:
可以看到,第一种处理是希望处理完后直接赋值给一个变量,然而forEach循环返回的是undefined,第二种处理虽然最终的确能够达到我们目标,拿到处理完的数据,却导致了一个问题--全局变量的污染。当然也可以在外部定一个数组,然后push处理后的数据到新数组来实现我们的目标,但整体看起来依然不是很优雅。
那有木有一种方法能够返回一个新数组,并且又不会影响到原来的数据呢?答案是肯定的,这就要提到强大的Functional Programing(简称FP)
Functional ProgramingFP是什么?又是用来干什么的?
Functional programmings(FP) means coding in functions
这是比较简洁和官方的说法,那是什么意思?简单地说,就是,用函数的方式处理问题,今天就会用到它的其中一个核心思想:纯函数(对于相同的输入,永远得到相同的输出,而且不会有任何的副作用)
看到这里是不是有点头绪了
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/98467.html
摘要:近期看了好多函数式编程以及设计模式的书和文章,于是想分享一些让代码更优雅的小技巧。事实上,不仅是数学运算,任何函数式的方法都有可缓存性,这是函数式编程的一个明显的优点解构嵌套数组这个方法和结合十分有用处。 今天翻了翻一年多前写的代码,感觉当年年轻的自己写下的代码真是图样啊(然而现在也没好到哪里去 /w)。近期看了好多函数式编程以及设计模式的书和文章,于是想分享一些让JS代码更优雅的小技...
摘要:生成器可以简单理解成一个函数,每次执行到语句就返回一个值,通过不停地调用这个函数,就能获取到所有的值,这些值就能构成了一个等效的列表,但是与列表不同的是,这些值是不断计算得出,而列表是在一开始就计算好了,这就是的思想。 python 是一门简单而优雅的语言,可能是过于简单了,不用花太多时间学习就能使用,其实 python 里面还有一些很好的特性,能大大简化你代码的逻辑,提高代码的可读性...
摘要:函数式编程与面向对象编程编程的本质之剑目录编程的本质读到两篇文章写的不错综合摘录一下复合是编程的本质函数式程序员在洞察问题方面会遵循一个奇特的路线。在面向对象编程中,类或接口的声明就是表面。 函数式编程与面向对象编程[5]:编程的本质 之剑 2016.5.6 01:26:31 编程的本质 读到两篇文章,写的不错, 综合摘录一下 复合是编程的本质 函数式程序员在洞察问题方面会遵循...
摘要:删除元素后,立即跳出,则正常退出,但不能向后继续循环了删除后立马终端循环,会正常跳出,但代价是不能继续向后循环了使用迭代器使用迭代器可,正确无误的删除,代码简洁优雅,推荐使用使用迭代器可,正确无误的删除注意这里时而不是 在工作中的许多场景下,我们都会使用到List这个数据结构,那么同样的有很多场景下需要删除List中的某一个元素或某几个元素,那么我们该如何正确无误地删除List中的元素...
阅读 2071·2021-11-24 09:39
阅读 2758·2021-07-29 13:49
阅读 2284·2019-08-29 14:15
阅读 2219·2019-08-29 12:40
阅读 3294·2019-08-26 13:42
阅读 609·2019-08-26 12:13
阅读 2043·2019-08-26 11:41
阅读 3330·2019-08-23 18:32