reduce的介绍:
- reduce和迭代方法(map、fliter、forEach)一样,会遍历过滤数组;reduce()方法会遍历数组中的每一个元素,每遍历一次就会执行一次回调函数。当遍历完之后会将最后的结果返回出去。
- reduce( )方法有两个参数,第一个参数是累加函数,第二个是函数的previousValue的初始值。
最后面那个0代表pre的起始值是0,current代表todos里面每一个元素
let y = this.todos.reduce((pre,current)=>pre+(current.done ? 1:0),0)
还可以用filter写:
this.todos.filter(todo=>todo.done == true).length()
这里是简写:
(pre,current)=>pre+(current.done ? 1:0)
其实等同于:
function(pre,current){
return pre+(current.done ? 1:0);
}