JavaScript的内置map和reduce方法

声明式方法:

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}

前者声明了一个变量,具体写了怎么实现的,更像是命令式的,教我们如何去实现。

如果您不习惯于以“ 声明式 ”或更具体地以“ 功能性 ”方式思考,这一点可能并不那么明显。

 

posted @ 2021-10-03 10:08  vba是最好的语言  阅读(89)  评论(0编辑  收藏  举报