review一个javascript功能函数
近半年来一直觉得自己在技术上好像左右挣扎,技术没啥提升,看书看不进,自学还挺慢。写出来的东西,自己都觉得不满意。让自己也用庸人自扰的感觉。
最近,在工作中,有一个小小的功能需要实现,这个功能非常简单,其大概功能是:当有一批商品需要促销时,满多少到多少元区间立减多少元,再比较离下一个优惠区间还差多少元,并提示下一区间的优惠价。比如,我这里有个价格优惠区间(满50减5,满100减10,满150减15,满200减20),如果我现在买了120元商品,那么我的提示就应该是:已优惠10,还差30元,可优惠15元。
这个功能是满简单的,因为优惠的价格区间是变化的,没办法在程序中写死。所以后端的同学就会把这个优惠的价格区间用一种字符格式输出来,我们再进行处理。字符格式如下:
<input type="hidden" name="priceRange" value="50:5,100:10,150:15,200:20" />
我是直接把input的value处理成了一个对象{'50':5, '100':10, '150':15, '200':20}方便我我以后的处理。
为了能获取价格区间,我创建一个数组用来存放对象的key值,也就是所说的价格区间。
var priceRange = {'50':5, '100':10, '150':15, '200':20};
function getPrice(num,priceRange) {
var oPrice = priceRange || {},
aPrice = [],
_pro; for (_pro in oPrice) {
aPrice.push(_pro);
}
// ...
}
接下来就是通过循环这个价格区间找出优惠的价格,并返回一个结果对象。
var priceRange = {'50':5, '100':10, '150':15, '200':20};
function getPrice(num,priceRange) {
// ...
for (var i = 0, len = aPrice.length; i < len; i++) {
if (aPrice[0] > num) {
break;
} if (i === (len - 1)) {
if (aPrice[i] <= num) {
return {
hasPrice: oPrice[aPrice[i]]
}
}
} else {
if (aPrice[i] <= num && num < aPrice[i + 1]) {
return {
hasPrice: oPrice[aPrice[i]],
price: aPrice[i + 1] - num,
youhui: oPrice[aPrice[i + 1]]
}
}
}
}
// ...
}
上面就是这个功能实现的比较关键的部分,下面看下完整的代码:
var priceRange = {'50':5, '100':10, '150':15, '200':20};
function getPrice(num, priceRange) {
var oPrice = priceRange || {},
aPrice = [],
_pro; for (_pro in oPrice) {
aPrice.push(_pro);
} for (var i = 0, len = aPrice.length; i < len; i++) {
if (aPrice[0] > num) {
break;
} if (i === (len - 1)) {
if (aPrice[i] <= num) {
return {
hasPrice: oPrice[aPrice[i]]
}
}
} else {
if (aPrice[i] <= num && num < aPrice[i + 1]) {
return {
hasPrice: oPrice[aPrice[i]], // 此价格的优惠价
price: aPrice[i + 1] - num, // 此价格离下一个价格的差
youhui: oPrice[aPrice[i + 1]] // 离下一个价格的优惠价
}
}
}
}
return {
hasPrice: 0,
price: aPrice[0] ? aPrice[0] - num : 0,
youhui: aPrice[1] ? oPrice[aPrice[1]] : 0
}
} console.log(getPrice(12, priceRange));
虽然,这个功能的代码写出来了,但是我总觉得那个地方写不好,但是自己却发现不了。所以,写出来,大家帮我code review.看看有没有更好的写法,不要吝惜自己的才华,请在评价那里一展你的风采。
review一个javascript功能函数的更多相关文章
- Functions类,一个Javascript的函数加法类,将两个函数加起来,顺序执行
以下是类的代码: var Functions = { oFunctions: null, add: function (oFunc, oNewFunc) { var oNew = function ( ...
- 关于 URL 编码及 JavaScript 编码函数【转载+整理】
原文地址:http://www.ruanyifeng.com/blog/2010/02/url_encoding.html 本文内容 引入 环境 测试 JavaScript 编码函数 引入 URL ...
- JavaScript功能检测技术和函数构造
Javascript与很多编程语言不同,它不能够控制其运行环境.再写php代码时,只要在服务器端部署了正确的版本,那么程序就绝对能够运行,对于其他python或ruby后端语言来说,也不存在什么灰色区 ...
- js javascript map函数去重功能的使用实例
js javascript map函数去重功能的使用实例 先上一个实战例子代码 var map = new Map(); for(var i=0; i<=9; i++){ map.set(i,i ...
- 一个JavaScript触发器插件,可通过指定频次、指定时间内触发指定的处理函数
js-trigger是一个JavaScript触发器插件,可通过指定频次.指定时间内触发指定的处理函数 Tango<tanwei_yx@126.com> 特性 支持AMD/CMD/Comm ...
- 推荐一个JavaScript触发器插件,可通过指定频次、指定时间内触发指定的处理函数
推荐一个JavaScript触发器插件js-trigger js-trigger是一个JavaScript触发器插件,可通过指定频次.指定时间内触发指定的处理函数 https://tanwei-cc. ...
- JavaScript中函数作为另一个函数的参数的时候它存在于哪个作用域
一直对函数作为参数被传递进另外一个函数理解的不是很清除.先看下这段代码吧: function test(fn){ var bar = 1; fn(); } var bar = 99; test(fun ...
- 理解 JavaScript 回调函数并使用
JavaScript中,函数是一等(first-class)对象:也就是说,函数是 Object 类型并且可以像其他一等对象(String,Array,Number等)一样使用.它们可以"保 ...
- 创建你的第一个JavaScript库
是否曾对Mootools的魔力感到惊奇?是否有想知道Dojo如何做到那样的?是否对jQuery感到好奇?在这个教程中,我们将了解它们背后的东西并且动手创建一个超级简单的你最喜欢的库. 我们其乎每天都在 ...
随机推荐
- 解决easyui jQuery JS的for循环调用ajax异步问题
由于JS的for循环与ajax非同步运行,因此导致for循环结束了而ajax却还未执行,解决此方法有两种 1.设置ajax参数async为false,即与js同步,默认是true(异步). 这里首先引 ...
- Java复习——网络编程
Java从最开始就是支持网络编程的,也正是网络使Java得到发展繁荣.在这里我记录一下如何使用Java进行网络编程,什么是Socket以及Java实现TCP,UDP的编程模型. InetAddress ...
- android流畅度比Ios差的原因
Andorid更新了一个版本又一个版本,硬件从单核到双核到四核,系统流畅度总算基本能和iOS持平了.不过人们不禁会问,为什么都是基于Linux,两个系统会差别如此大?为什么iPhone 4用单核处理器 ...
- OD 实验(十八) - 简单注册机的编写
程序: 运行 这是一个注册机 随便输入点内容,点击 Check 弹出错误的对话框 逆向: 用 OD 载入程序 在文本框处下断点 按 Alt+B 查看断点 这个断点在动态链接库那里 跑一下程序,输入内容 ...
- python开发_python中的list操作
对python中list的操作,大家可以参考: Python list 操作 以下是我个人的笔记: ============================================ Add b ...
- Mysql本地服务器安装
1.下载并解压 2.新建my.ini my.ini内容如下(路径填写自己的): ------------------------------------------------------------ ...
- 关注下Swoole
面向生产环境的 PHP 异步网络通信引擎 使 PHP 开发人员可以编写高性能的异步并发 TCP.UDP.Unix Socket.HTTP,WebSocket 服务.Swoole 可以广泛应用于互联网. ...
- python的disutils创建分发包
python中的distutils包主要用创建共享包,安装包,在平时安装python模块的时候,使用的命令如下: python setup.py install 其实以上代码就是distuitls包提 ...
- wwwroot文件无读取某个文件夹权限(对IIS_USER增加全部权限)
- 一致性哈希算法(consistent hashing)(转载)
转载请说明出处:http://blog.csdn.net/cywosp/article/details/23397179 一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT) ...