码迷,mamicode.com
首页 > 编程语言 > 详细

review一个javascript功能函数

时间:2014-06-30 23:26:13      阅读:354      评论:0      收藏:0      [点我收藏+]

标签:style   blog   java   color   javascript   cti   

    近半年来一直觉得自己在技术上好像左右挣扎,技术没啥提升,看书看不进,自学还挺慢。写出来的东西,自己都觉得不满意。让自己也用庸人自扰的感觉。

    最近,在工作中,有一个小小的功能需要实现,这个功能非常简单,其大概功能是:当有一批商品需要促销时,满多少到多少元区间立减多少元,再比较离下一个优惠区间还差多少元,并提示下一区间的优惠价。比如,我这里有个价格优惠区间(满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功能函数,布布扣,bubuko.com

review一个javascript功能函数

标签:style   blog   java   color   javascript   cti   

原文地址:http://www.cnblogs.com/qiheng/p/3815892.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!