当前位置: 首页 > 科技观察

助你掌握JS:array.filter

时间:2023-03-14 17:38:34 科技观察

,函数式编程七大武器之一,我们何其幸运!这个世界上还有一种几乎完全支持FP编程的流行语言。这门语言是StackOverflow历年来的武器清单。列表中排名第一的JavaScript。函数式编程有利于并实现思维。当我们把玩scheme、lisp等函数式范式编程语言时,我们很遗憾它们在现实世界中一无是处。只有elisp似乎可以弥补一些不足,把emacs用起来,但仅此而已。然而,我们是何其幸运!JavaScript几乎完全支持函数式编程的思想,甚至在React的带领下,向FP函数式编程大有喜人之势,一路向暗。我们多么幸运!JavaScript伙计们。编程从哪里开始?看看人类历史上第二古老的编程语言的名字:Lisp。列表处理,编程语言就是处理列表,一切从列表数组开始。我们每天要处理的任务是清单,我们的早餐清单是清单,就连女神都有备胎清单。列表可以抽象和概括我们人类文明的一切。人类意识到了这一点,于是将古老的语言命名为lisp,listprocessing。所以,我们脚下的路,也是从清单开始的。零、上一篇总结上一篇我们讲解了array.reduce这个处理数组的核心利器。array.reduce是“太极生两仪”的太极拳,是一切变化的起点。array.reduce可以模拟所有其他工具。array.reduce的本质是将数组缩减为一个值。接下来,我们在array.reduce的基础上推导array.ma。array.map将数学思想直接应用于编程。array.reduce和array.map的共同特点是对数组进行变换。接下来我们来看看帮助我们进行逻辑思考的部分array.filter和array.find(array.findIndex)。1、array.filter思想的筛选。逻辑判断和筛选的核心是关键字谓词。单词拆解,pre是提前,dict是说话显示(比如dictionary就是显示单词的字典)。因此,谓词逻辑就是说在执行代码之前条件是否满足。array.filter的应用简单直接,就像我们思维的自然流动:[1,4,7].filter(x=>x>3);//[4,7]//orCtrip[1,4,7].filter(x=>{returnx>3;})执行过程如图:2.array.filter的应用案例下面我们来考察一个真实案例,处理存储在JSON:constaccountBalance={accountsData:[{id:"user01",balance:888,},{id:"user02",balance:999,},{id:"user03",balance:-18,},{id:"user04",balance:-20,},{id:"user05",balance:1,},],};如何从票据中过滤掉银行资产为负的账户信息。至此,看到filter,我们欣喜若狂,filter的应用正好符合我们的思路。constnegativeAccount=accountBalance.accountsData.filter(v=>v.balance<0);console.log(negativeAccount);//输出结果//[{id:'user03',balance:-18},{id:'user04',balance:-20}]然后,应用前面学过的技术,array.map提取负债账户的ID。constnegAccIds=accountBalance.accountsData.filter(v=>v.balance<0).map(v=>v.id);//:['user03','user04']三、使用array.reduce模拟数组。filter回望一切的起点,array.reduce,他是源头,海纳百川源于reduce。也就是说,我们总是用reduce来思考问题。开始用reduce模拟实现array.filter():constnewFilter=(arr,fn)=>arr.reduce((x,y)=>(fn(y)?x.concat(y):x),[]);测试后得到相同的结果:constnegAccIds=accountBalance.accountsData.newFilter(v=>v.balance<0).map(v=>v.id);//:['user03','user04']这个,我们也可以看出应用reduce的关键是只有accumulator.arr.reduce(callback(accumulator,currentValue,[,index[,array]])[,initialValue])[编者推荐]5分钟让你了解K8S必要的架构和网络模型的概念。1992年百度程序员被捕,我们有什么警示?开源云盘工具:Nextcloud21私有云盘构建更纯粹,微软Windows1021H2大更新将减少系统臃肿软件数量996操作系统是好是坏?