# 轻数据结构, 重操作
# 函数式的基本操作
介绍了几个函数式的基本操作:map、reduce、filter、some、every。这些在Array的原型上都有对应的方法,他们的功能不再赘述。
# 声明式惰性计算函数链
在第一章提到函数式编程的特点包括“使用流式链处理数据”,这里再次说明。
一般我们使用多个函数可能会这样:
func3(func2(func1(data)))
这种一层套一层的结构很难阅读,需要一层一层剥离外部函数才能知道到底实现了什么功能,也更难维护。函数链是一种更好的实践。文中提到了lodash的_.chain方法,其实underscore中也有(但似乎没实现惰性?),使用函数链会这么写:
_.chain(data)
.func1()
.func2()
.value()
_.chain方法把数据包裹,使其能链接许多方法,使用点语法即可调用而不是一层一层函数包裹。另一点优势是在调用value方法之前不会真正执行任何操作,因此是惰性的,有利于优化性能。