函数式编程

函数式编程理念
函数式编程是一种方案简单、功能独立、对作用域外没有任何副作用的编程范式:INPUT -> PROCESS -> OUTPUT
Array.prototype.map()
map() 方法创建一个新数组,其中填充了对调用数组中的每个元素调用提供的函数的结果。
Array.prototype.filter()
filter() 方法创建一个新数组,其中包含通过提供的函数实现的测试的所有元素。
Array.prototype.slice()
slice() 方法将数组的一部分的浅拷贝返回到从开始到结束(不包括结束)选择的新数组对象中,其中开始和结束表示该数组中项目的索引。 不会修改原始数组。
Array.prototype.concat()
concat() 方法用于合并两个或多个数组。 此方法不会更改现有数组,而是返回一个新数组。
Array.prototype.reduce()
reduce() 方法按顺序在数组的每个元素上执行用户提供的“reducer”回调函数,并传入对前一个元素进行计算的返回值。 在数组的所有元素上运行 reducer 的最终结果是单个值。
Array.prototype.sort()
sort() 方法就地对数组的元素进行排序并返回排序后的数组。 默认排序顺序是升序,建立在将元素转换为字符串,然后比较它们的 UTF-16 代码单元值序列的基础上。
String.prototype.split()
split() 方法将一个字符串划分为一个有序的子字符串列表,将这些子字符串放入一个数组中,并返回该数组。 除法是通过搜索模式来完成的; 其中模式作为方法调用中的第一个参数提供。
Array.prototype.join()
join() 方法通过连接数组(或类似数组的对象)中的所有元素来创建并返回一个新字符串,用逗号或指定的分隔符字符串分隔。 如果数组只有一项,则该项将在不使用分隔符的情况下返回。
Array.prototype.every()
every() 方法测试数组中的所有元素是否通过提供的函数实现的测试。 它返回一个布尔值。
Array.prototype.some()
some() 方法测试数组中是否至少有一个元素通过了提供的函数实现的测试。 如果在数组中找到一个元素,提供的函数为其返回真值,则返回真值; 否则返回false。 它不会修改数组。
函数柯里化和局部调用
arity(参数个数)是函数所需的形参的数量。 函数柯里化(Currying)意思是把接受多个 arity 的函数变换成接受单一 arity 的函数。