怎样使你的 JavaScript 代码简单易读(推荐)
让我们先从怎样删除数组中的重复项这个简单问题开始。
复杂-使用forEach删除重复项
首先,我们新创建一个空数组,用forEach()在数组的每个元素上执行一次提供的函数。最后检查新数组中是否存在该值,如果不存在,则添加它。
functionremoveDuplicates(arr){ constuniqueVals=[]; arr.forEach((value,index)=>{ if(uniqueVals.indexOf(value)===-1){ uniqueVals.push(value); } }); returnuniqueVals; }
简单-使用filter删除重复项
用filter方法创建一个包含所有元素的新数组,通过提供的函数进行测试。基本上我们只需要迭代数组,并检查当前元素在数组中出现的第一个位置是否和当前位置相同。当然,这两个位置对于重复元素来说是不同的。
functionremoveDuplicates(arr){ returnarr.filter((item,pos)=>arr.indexOf(item)===pos) }
简单-使用Set删除重复项
ES6提供了Set对象,这使事情变得更加容易。Set仅允许存在唯一值,所以当你传入数组时,它会自动删除重复的值。
但是,如果你需要一个包含唯一元素的数组,为什么不一开始就用Set呢?
functionremoveDuplicates(arr){ return[...newSet(arr)]; }
接下来让我们解决第二个问题:写一个函数,向该函数传入一组非负整数,其中的值各不不同,要求使它们连续,并返回缺失的数字个数。
对于constarr=[4,2,6,8],输出应为
countMissingNumbers(arr)=3
你可以看到3,5和7是缺失的。
复杂-使用sort和for循环解决
要获得最小和最大的数字,我们需要用用sort方法按升序进行排序来达到这个目的,然后从最小的数字循环到最大的数字。每次检查数组中是否存在应该出现的序号,如果不存在,就对计数器加一。
functioncountMissingNumbers(arr){ arr.sort((a,b)=>a-b); letcount=0; constmin=arr[0]; constmax=arr[arr.length-1]; for(i=min;i简单-使用Math.max和Math.min求解
这个解决方案有一个简单的解释:Math.max()函数返回数组中最大的数字,而Math.min()返回数组中最小的数字。
首先,如果没有丢失数字,我们能知道数组中有多少个数字。所以可以用以下公式maxNumber-minNuber+1,并用这个结果减去数组长度,得到的差就是缺失数字的个数。
functioncountMissingNumbers(arr){ returnMath.max(...arr)-Math.min(...arr)+1-arr.length; }最后一个问题是检查字符串是否为回文。所谓回文是一个从左到右和从右到左读起来都一样的字符串。
复杂-使用for循环检查
这个方法的循环从字符串的第一个字符开始,一直到字符串长度的一半。字符串中最后一个字符的索引是string.length-1,倒数第二个字符的索引是string.length-2,依此类推。所以在这里我们检查从左边开始的指定索引处的字符是否等于右边指定索引处的字符。如果它们不相等,就返回false。
functioncheckPalindrome(inputString){ letlength=inputString.length for(leti=0;i简单-用reverse和join检查
我认为这个解决方案简单到不需要解释,因为代码本身说明了一切。我们只需使用spreadoperator从字符串创建一个数组,然后reverse数组,最后用join方法将其再次转换为字符串,并与原始字符串进行比较。
functioncheckPalindrome(string){ returnstring===[...string].reverse().join(''); }保持简单!
当有更简单的方法时,为什么要搞得那么复杂?希望你能从这篇文章中学到一些很有意思的思路。祝你有一个美好的编码时间,尽量不要让生活中简单的事情复杂化。
以上所述是小编给大家介绍的怎样使你的JavaScript代码简单易读详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。