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

5个JS数组技巧,提高你的开发能力

时间:2023-03-11 20:44:13 科技观察

在前端开发中,数组是经常用到的数组结构。今天给大家介绍5个数组处理技巧,希望能给大家带来一些启发和帮助。事不宜迟,让我们开始吧。1.随机排列在开发者中,有时候我们需要重新打乱数组的顺序。JS没有提供数组随机排序的方法。下面是一个随机排序的方法:functionshuffle(arr){vari,j,temp;for(i=arr.length-1;i>0;i--){j=Math.floor(Math.random()*(i+1));temp=arr[i];arr[i]=arr[j];arr[j]=temp;}returnarr;}2.uniqueValue在开发者中,我们经常需要过滤重复的值。下面介绍几种过滤数组中重复值的方法。使用Set对象使用Set()函数,该函数处理单个值数组。对于嵌套在数组中的对象值来说不是一个好的选择。constnumArray=[1,2,3,4,2,3,4,5,1,1,2,3,3,4,5,6,7,8,2,4,6];//使用数组.frommethodArray.from(newSet(numArray));//使用扩展方法[...newSet(numArray)]使用Array.filter使用filter方法,我们可以过滤出属于对象的元素。constdata=[{id:1,name:'柠檬'},{id:2,name:'薄荷'},{id:3,name:'芒果'},{id:4,name:'苹果'},{id:5,name:'柠檬'},{id:6,name:'薄荷'},{id:7,name:'芒果'},{id:8,name:'苹果'},]functionfindUnique(data){returndata.filter((value,index,array)=>{if(array.findIndex(item=>item.name===value.name)===index){returnvalue;}})}3.使用loadsh的lodash方法import{uniqBy}from'lodash'constdata=[{id:1,name:'Lemon'},{id:2,name:'Mint'},{id:3,name:'Mango'},{id:4,name:'Apple'},{id:5,name:'柠檬'},{id:6,name:'薄荷'},{id:7,name:'芒果'},{id:8,name:'Apple'},]functionfindUnique(data){returnuniqBy(data,e=>{returne.name})}3.按属性对对象数组进行排序我们知道JS数组中的sort方法是按照字典的顺序进行排序的,所以对于string类,这种方法可以很好的工作,但是对于数据元素是对象类型,就是不太好用,这里需要自定义一个排序方式。在比较函数中,我们会根据以下条件返回值:小于0:A在B之前大于0:B在A之前等于0:A和B彼此不变constdata=[{id:1,name:'Lemon',type:'fruit'},{id:2,name:'Mint',type:'vegetable'},{id:3,name:'Mango',type:'grain'},{id:4,name:'Apple',type:'fruit'},{id:5,name:'Lemon',type:'vegetable'},{id:6,name:'Mint',type:'fruit'},{id:7,name:'Mango',type:'fruit'},{id:8,name:'Apple',type:'grain'},]functioncompare(a,b){//UsetoLowerCase()忽略字符大小写consttypeA=a.type.toLowerCase();consttypeB=b.type.toLowerCase();letcomparison=0;if(typeA>typeB){comparison=1;}elseif(typeAitem.name==='Apple')//value={id:4,name:'Apple'}作者:GhaziKhan译者:前端小智来源:codewithghazi原文:https://codewithghazi.com/javascript-array-tricks-to-improve-your-development-skill/本文转载自微信公众号“大招天下”,可通过以下二维码关注代码。转载本文请联系大千世界公众号。