声明式方法:
reduce:
计算数组元素相加后的总和: var numbers = [65, 44, 12, 4]; function getSum(total, num) { return total + num; } function myFunction(item) { document.getElementById("demo").innerHTML = numbers.reduce(getSum); } 输出结果: 125
或者这样?
function add (arr) { return arr.reduce((prev, current) => prev + current, 0)}
map:类比c#的linq
var numbers = [65, 44, 12, 4]; var result = numbers.map(item=>item*2);console.log(result)
这种是声明式的方法,
在每个示例中,我们都在描述我们要发生的事情,而不是HOW(我们不知道HOW map和reduce的实现方式,我们也不在乎)。 我们不会改变任何状态。 所有的变异都在map内部进行了抽象并精简 。 它也更具可读性(当然,一旦您习惯了映射和reduce )。
所有的变异都在map内部进行了抽象并精简 。 它也更具可读性(当然,一旦您习惯了映射和reduce )。
命令式方法:
function double (arr) { let results = [] for (let i = 0; i < arr.length; i++){ results.push(arr[i] * 2) } return results}
function add (arr) { let result = 0 for (let i = 0; i < arr.length; i++){ result += arr[i] } return result}
前者声明了一个变量,具体写了怎么实现的,更像是命令式的,教我们如何去实现。
如果您不习惯于以“ 声明式 ”或更具体地以“ 功能性 ”方式思考,这一点可能并不那么明显。