在全堆栈开发人员角色的技术访谈中,我发现自己处于熟悉但出乎意料的挑战性情况。一切都顺利进行,直到面试官向我介绍一开始很简单的任务。
我想,“蛋糕。”排序是一个基本的操作,我没想到会有任何麻烦。但是,一旦我开始编写代码,我就会遇到障碍。文件名遍布整个地方,有些很简单,但其他文件包括两者的数字,字母和组合。
我尝试使用基本的字符串排序方法,例如:
array.sort();但这产生了奇怪的结果。这些数字在词典上进行了排序(“ 10”将在“ 2”之前出现,因为它以“ 1”开头),而混合字母数字的字符串并不是正确的顺序。这是一团糟,它根本不像您在文件资源管理器中看到的自然顺序。
我能感觉到时钟滴答声和压力加大。我尝试通过各种自定义比较功能来正确处理这些数字,但似乎没有单击。,我记得不久前我读过的一个简单的技巧:localecompare。
array.sort((a,b)=> a.localecompare(b,undefined,{numeric:true,sexitivity:'base'}));
这一单行代码完全按照文件资源管理器的方式对文件名进行排序:数字是自然订购的,并无缝处理字母/数字组合。
最初感觉像一个复杂的问题最终通过简单,优雅的解决方案解决了。提醒人们,有时最有效的工具是最简单的,并且知道那些小技巧可以使一切变得不同。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3