龙空技术网

JS单层循环分类排序实例

污斑兔 157

前言:

现在姐妹们对“js循环列表”大约比较着重,兄弟们都需要知道一些“js循环列表”的相关内容。那么小编也在网络上收集了一些关于“js循环列表””的相关文章,希望你们能喜欢,姐妹们快快来学习一下吧!

场景

数据库有列表(比如例子里面的品牌列表),下发获取到的是已经自然排序后的列表,我们需要将他转为类似通讯录结构的A, B, C, ...

实例

比如我们有如下数据(数据自己爬的皇权免税店品牌,如侵权请告知):

数据源

这是已经排序好的,然后需要进行分类成如下结构:

那个res就是数据源,是个string的数组。

很容易想到下面的方式:

这里无视1,8等数字,方便分析。效果如下:

问题是解决了,但是有很大的缺陷。

无拓展性两层遍历不美观

无拓展性就很明显,分类依赖于前端代码写死,如果数据库有变动超出前端限制,那么就会出现业务bug。

你可以说,弄个“其他”解决,但是其他本身就很杂乱,依旧不够nice。

而两层遍历就是算法优化问题了,我们下面就是单层遍历将上面两个问题一次性解决,这就是代码洁癖。

解决方案

话不多说,直接上代码:

这里逻辑略微有点绕,注意下JS中对象引用问题,我这里采用先加入到数组中,在对该对象操作,从而达到发现不同类时候可以避免保存不进去或保存到其他分类下面。

具体逻辑的话,建议自己玩玩看,弄点模拟数据走一下即可。

效果如下:

最大优势:

完全的拓展性,随便数据库怎么改,都可以根据第一个字符分类单层循环,解决大数据量下的嵌套循环的坑。

欢迎有代码洁癖的同学讨论,有更好的方案请务必告诉我,谢谢。

标签: #js循环列表