JavaScript 打怪升级——把业务逻辑当练习题做

作者: 守候

https://segmentfault.com/a/1190000012499256

1.前言

开发项目和出没社区有一段时间了,会遇上一些比较有印象业务需求。这些业务需求,可能是自己开发项目遇上的,可能是在社区看到的业务需求,或者其他情况接触到的需求,但是这些业务需求的实现逻辑都值得一写。因为这些业务逻辑可以当做练习题一样,可以给大家练手。也希望大家从这些需求实现的逻辑里面可以能到javascript的相关知识,当然如果大家觉得代码需要怎样优化,或者有什么建议,更好的实现方案,觉得我哪里写错了,或者有觉得可以分享的需求,可以在评论提下!

2.月份坐标轴

这个需求是,看下图就懂了

实现方式其实很简单,我在代码打上注释,大家就懂了!

可能大家看着会懵,直接看下面的循环图就懂了

3.数值区间

如下图,就是几个数值区间,而且会有一个最小值和最大值

测试用例

运行结果

4.数组对比

这个基于我回答过的一个问题,现在化用,改写一下

JavaScript如何对比两个数组?数组B根据数组A来做出增删? (不用jquery,原生js)

具体问题是这样的:

arryA

arryB

1、如果arryA中有a,arryB中没有,那么在arryB中增加一个key值为a的boj,且其他属性值可均为'0';如下:

2、如果arryA中有a,arryB中也有key值为a的obj,那么arryB则不改变,并且该obj里的其他属性和属性值均不变;

3、如果在arryA中删除了a,那么arryB中key值为a的obj整个删掉。

测试

5.学院获奖

统计学生申请优秀毕业生,并且符合条件的(成绩优秀,拿过奖学金,获得过三好学生)。前提是要申请

大概的流程图就是像下面这样!

我在代码上写上注释,相信不难理解了

6.数组连续的最大长度

这个也是出于我回答过的问题:如下

7.答题连对数

这个和上面的代码基本一样,只是判断条件毫厘之差,直接贴,大家看就好

8.命名方式转换

比如驼峰命名方式转'-'命名方式。

比如'-'命名方式转驼峰命名方式

9.格式化字符

这个最常见的就是在金额方面的显示需求上,比如后台返回10000。前端要显示成10,000或者其他格式等!

10.对象合并,并且记录异常数据

这个需求,可能大家有点懵。下面实例分析比如有两个都地方记录了我的信息

现在要合并我的信息,并且记录可能有异常的信息。比如上面的name属性,在两个对象都有,而且两个对象的值不一样,那么就不知道到底是info1中的name属性是正确的,还是info2中的name属性是正确的。所以,就得把name这个属性记录起来,方便以后核对name这个属性。

如下图

下面,一步一步来,先不管3721,直接合并属性

然后先准备一个字段,记录哪些异常信息

最后检查对象,判断哪些信息有异常

11.筛选标签

如下图,在下面渲染这个标签

大家可能第一可能觉得压根没难度,就是一个对象数组:比如

但是这样的数据,显然是要经过处理生成的,因为不可能这样发送请求

发送过去的参数应该是这样的

怎么进行数据的处理呢,其实很简单,代码不打注释,我想都看得懂

有了这些数据,渲染到页面这个就简单了!

12.导入excel内容

就是excel上这样的内容

转成下面的数据

目录如下

下面开始写代码,我们利用node.js来写

然后命令行执行该js

然后就发现多了一个test.js文件

excel的数据就这样导入成js的一个数组了,只要引入这个数组,就可以正常的使用了!

13.随机循环

当时接到的业务是实际显示客户的信息,感觉有点像音乐播放器的随机循环。

要求:

一个提示列表里面,提示的信息每隔500ms随机展示。

同一轮循环里面,一个提示信息只能展示一次。

列表的提示信息全部展示完了,进行下一轮展示。

这个逻辑没什么,直接在代码打上注释,我想大家就明白了!

14.小结

好了,关于我收集到的一些业务需求逻辑,以及实现的方式,就说到这里了!接触到的也无需求逻辑很多,但是值得写的,可以当做练习题的,就记录到这里了。我上面代码实现可能会有点粗糙,大家有更好的实现方案,欢迎建议一下。如果大家有什么可以当做练习题的需求,可以提下。让大家有多些练习题可以尝试下,学习下!

●编号711,输入编号直达本文

●输入m获取文章目录

推荐↓↓↓

Web开发

更多推荐《18个技术类微信公众号》

涵盖:程序人生、算法与数据结构、黑客技术与网络安全、大数据技术、前端开发、Java、Python、Web开发、安卓开发、iOS开发、C/C++、.NET、Linux、数据库、运维等。

  • 发表于:
  • 原文链接:https://kuaibao.qq.com/s/20180629B0BRIS00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券