翻译:疯狂的技术宅
https://medium.freecodecamp.o…
本文首发微信公众号:前端先锋
欢迎关注,每天都给你推送新鲜的前端技术文章
解决一个问题可以有很多方法,但是有些方法很复杂,甚至有些是荒谬的。在本文中,我想谈谈解决一个问题时的好方案和坏方案。
让我们先从怎样删除数组中的重复项这个简单问题开始。
首先,我们新创建一个空数组,用 foreach() 在数组的每个元素上执行一次提供的函数。最后检查新数组中是否存在该值,如果不存在,则添加它。
function removeduplicates(arr) { const uniquevals = []; arr.foreach((value,index) => { if(uniquevals.indexof(value) === -1) { uniqu培训学习心得evals.push(value); } }); return uniquevals;}
用 filter 方法创建一个包含所有元素的新数组,通过提供的函数进行测试。基本上我们只需要迭代数组,并检查当前元素在数组中出现的第一个位置是否和当前位置相同。当然,这两个位置对于重复元素来说是不同的。
function removeduplicates(arr) { return arr.filter((item, pos) => arr.indexof(item) === pos)}
es6 提供了 t 对象,这使事情变得更加容易。 t 仅允许存在唯一值,所以当你传入数组时,它会自动删除重复的值。
但是,如果你需要一个包含唯一元素的数组,为什么不一开始就用 t 呢?
function removeduplicates(arr) { return [...new t(arr)];}
接下来让我们解决第二个问题:写一个函数,向该函数传入一组非负整数,其中的值各不不同,要求使它们连续,并返回缺失的数字个数。
对于const arr = [4,2,6,8],输出应为
count严日诗missingnumbers(arr)= 3
你可以看到 3,5 和 7 是缺失的。
要获得最小和最大的数字,我们需要用用 sort方法按升序进行排序来达到这个目的,然后从最小的数字循环到最大的数字。每次检查数组中是否存在应该出现的序号,如果不存在,就对计数器加一。
function countmissingnumbers(arr) { arr.sort((a,b) => a-b); let count = 0; const min = arr[0]; const max = arr[arr.length-1]; for (i = min; i<max; i++) { if (arr.indexoftoefl考试报名(i) 神探夏洛克第四季迅雷下载=== -1) { count++; } } return count;}
这个解决方案有一个简单的解释:math.max()函数返回数组中最大的数字,而math.min() 返回数组中最小的数字。
首先,如果没有丢失数字,我们能知道数组中有多少个数字。所以可以用以下公式 maxnumber – minnuber + 1,并用这个结果减去数组长度,得到的差就是缺失数字的个数。
function countmissingnumbers(arr) { return math.max(...arr) - math.min(...arr) + 1 - arr.length;}
最后一个问题是检查字符串是否为回文。所谓 回文 是一个从左到右和从右到左读起来都一样的字符串。
这个方法的循环从字符串的第一个字符开始,一直到字符串长度的一半。字符串中最后一个字符的索引是 string.length-1,倒数第二个字符的索引是string.length-2,依此类推。所以在这里我们检查从左边开始的指定索引处的字符是否等于右边指定索引处的字符。如果它们不相等,就返回fal。
function checkpalindrome(inputstring) { let length = inputstring.length for (let i =0; i<length / 2; i++) { if (inputstring[i] !== inputstring[length - 1 -i]) { return fal } } return true}
我认为这个解决方案简单到不需要解释,因为代码本身说明了一切。我们只需使用 spread operator 从字符串创建一个数组,然后rever数组,最后用 join 方法将其再次转换为字符串,并与原始字符串进行比较。
function checkpalindrome(string) { return string === [...string].rever().join('');}
当有更简单的方法时,为什么要搞得那么复杂?希望你能从这篇文章中学到一些很有意思的思路。祝你有一个美好的编码时间,尽量不要让生活中简单的事情复杂化。
12个令人惊叹的css实验项目 世界顶级公司的前端面试都问些什么 css flexbox 可视化手册 过节很无聊?还是用 javascript 写一个脑力小游戏吧! 从设计者的角度看 react css粘性定位是怎样工作的 一步步教你用html5 svg实现动画效果 程序员30岁前月薪达不到30k,该何去何从 7个开放式的前端面试题 react 教程:快速上手指南
本文发布于:2023-04-06 06:35:56,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/aa8ac40253ef896ff7acf08ef9efbb96.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:怎样使你的JavaScript代码简单易读.doc
本文 PDF 下载地址:怎样使你的JavaScript代码简单易读.pdf
留言与评论(共有 0 条评论) |