在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
本文将介绍一些常用的数组处理函数和语法,如reduce()、filter()、map()、every()、some()、展开运算符。这些知识和React与Redux本身没有直接关系,但是本章的示例中包含了这些函数和语法的用法,我们正好可以在程序中学习它们。另外值得一提的是,reduce()、filter()、map()等函数的思想来自函数式编程,感谢JavaScript是一门函数式编程语言,让原本复杂的逻辑处理变得如此简单。 reduce()概述 reduce()方法接收一个函数作为累加器(accumulator),数组中的每个值(从左到右)开始合并,最终为一个值。 语法 array.reduce(callback,initialValue) 参数解释如下。 const completedCount=todos.reduce( (count,todo)=>(todo.completed?count+1:count), 0); 代码解释: ·todos是一个数组。 filter()概述 filter()方法使用指定的函数测试所有元素,并创建一个包含所有通过测试的元素的新数组。 语法 array.filter(callback,thisArg) 参数解释如下。 ·callback:用来测试数组的每个元素的函数,包含三个参数。返回true表示保留该元 return state.filter(todo=> todo.id!==action.id ) 代码解释: state是个任务数组。 map()概述 map()方法返回一个由原数组中的每个元素调用一个指定方法后的返回值组成的新数组。 语法 array.map(callback,thisArg) 参数解释如下。 ·callback:原数组中的元素调用该方法后返回一个新的元素。该方法包含如下三个参数。 示例 return state.map(todo=>( todo.id===action.id? Object.assign({},todo.{ text:action.text}): todo )); 代码解释: state是变化前的state,是一个数组。 语法为Object.assign(target,...sources).target是目标对象,sources是任意数目的源对象。 every()概述 every()方法用于测试数组中所有元素是否都通过了指定函数的测试。 语法 array.every(callback,thisArg) callbak:用来测试每个元素的函数。 示例 const areAllMarked=state.every(todo=>todo.completed) 遍历任务数组、每一项任务的completed属性均为true时候,返回true. some()概述 some()方法用于测试数组中是否至少有一项元素通过了指定函数的测试。 语法 array.some(callback[,thisArg]) 参数解释如下。 ·callback:用来测试每个元素的函数。 示例 const areAllMarked=state.some(todo=>todo.completed) 遍历任务数组、只要有一项任务的completed属性为true,返回true. 展开运算符概述 展开运算符允许一个表达式在某处展开。常用的场景包括:函数参数、数组元素、解构赋值。 语法 用于函数参数: myFunction(...iterable0bj); 用于数组元素: [...iterableobj,4,5,6] 用于解构赋值: const [a,b,...rest]=[1,2,3,4,5] const {a,b,...rest}={a:1,b:2,c:3,d:4} 用于React 组件的props: <App...iterable0bj/> 示例 展开state return[ id:state.reduce((maxId,todo)=>Math,max(todo,id,maxId),-1)+1, { completed:false, text:action.text, }, ...state, ]; 展开actions的每一个属性到组件中。 <TodoItem key={todo.id}todo={todo}{...actions}/> 总结reduce()方法接收一个函数作为累加器(accumulator),数组中的每个值(从左到右)开始合并,最终为一个值。 到此这篇关于React与Redux之数组处理讲解的文章就介绍到这了,更多相关React与Redux之数组处理内容请搜索极客世界以前的文章或继续浏览下面的相关文章希望大家以后多多支持极客世界! |
请发表评论