`
小嗷喏
  • 浏览: 52504 次
  • 性别: Icon_minigender_1
  • 来自: 石家庄
社区版块
存档分类
最新评论

用hash表 来替换if else

    博客分类:
  • JS
阅读更多

    在写处理短信的时候,要根据短信的内容来判断是报名短信和竞价短信时候,要到一些 if else, 可以用hash表的形式来替换掉这些代码。

 if(message.content.substring(0, 2).toUpperCase() == "BM") {
        process_activity_sign_up_message()
    } else if (message.content.substring(0, 2).toUpperCase() == "JJ") {
        process_bid_sign_up_message()
    } else {
        prompt_message_format()
    }

   下面用hash的形式来替换一下:

fore_two_string = message.content.substring(0, 2).toUpperCase()
  judge_message()
function judge_message() {
    var judge_message = {
        BM: function() {
            process_activity_sign_up_message()
        },

        JJ: function() {
            process_bid_sign_up_message()
        }
    }

    if(judge_message[fore_two_string]) {
        judge_message[fore_two_string]()
        return
    }
    prompt_message_format()
}

    根据活动状态来处理短信:

judge_activity_status()

function judge_activity_status() {

    var status = ActivityInfo.get_starting_activity()
    if(status == "un_start") {
        console.log("活动报名还未开始, 请稍后再试。")
        return
    }

    if(status == "start") {
        process_message_when_activity_status_start()
        return
    }
    
    if(status == "end") {
        console.log("抱歉,活动报名已经结束。")
    }

    用hash 来替换:

judge_activity_status()

function judge_activity_status() {
    var judge_activity_status = {
        un_start: function() {
            console.log("活动报名还未开始, 请稍后再试。")
        },

        end: function() {
            console.log("抱歉,活动报名已经结束。")
        },

        start: function() {
            process_message_when_activity_status_start()
        }
    }
   judge_activity_status[ActivityInfo.get_starting_activity().status]()
}

    不知道hash表的key时,如何取value值。在统计竞价各价钱的人数时:

var group_bid_sign_up_infos_by_price = _.groupBy(bid_sign_up_infos, function(bid_sign_up_info) {
        return bid_sign_up_info.price
    }) 
var price_counts = [ ]
_.map(group_bid_sign_up_infos_by_price, function(value, key) {
    price_counts.push({price: key, count: value.length})
})
return price_counts

    用Underscope的_.groupBy来对竞价进行按price分组,再_.map来遍历分组后产生的hash表,然后对它进行新的数据封装。也可以用

for(key in group_bid_sign_up_infos_by_price) {
    price_counts.push({price: key, count: group_bid_sign_up_infos_by_price[key].length})
}
分享到:
评论

相关推荐

    LRU.rar_LRU

    一种常见的方式是使用哈希表(HashMap)结合双向链表来实现。哈希表用于快速查找,双向链表则用来记录数据的访问顺序,因为LRU的关键在于数据的最近使用顺序。 首先,我们需要定义一个节点类`Node`,它包含数据、键...

    折半查找、二叉排序树、链式哈希表的建立与查找

    - 有两个子节点,用后继节点(右子树最小节点)或前驱节点(左子树最大节点)替换被删除节点,然后删除后继节点或前驱节点。 #### 三、链式哈希表的建立与查找 **定义**:链式哈希表是解决哈希冲突的一种方法,它...

    MFC c++文件查重,文件移动,文件复制,文件重命名.

    可以使用`CFile`类来打开和读取文件,然后使用SHA-1或MD5等哈希算法计算文件的唯一标识。例如,可以创建一个辅助函数来计算文件的哈希值,并将所有文件的哈希值存储在一个容器中,如`std::map`,通过比较哈希值来...

    freemarker总结

    其它的运行符可以作用于数字和日期,但不能作用于字符串,大部分的时候,使用gt等字母运算符代替>会有更好的效果,因为 FreeMarker会把>解释成FTL标签的结束字符,当然,也可以使用括号来避免这种情况,如:<#if (x>y)> ...

    给页面导航栏选中栏目添加特殊样式(页面刷新后仍有效)

    if (currentHash && $('a[href="' + currentHash + '"]').length) { // 移除所有已有的active类 $('.navbar li').removeClass('active'); // 为匹配的li元素添加active类 $('a[href="' + currentHash + '"]')....

    FTL入门文档学习

    * `<#if condition><#elseif condition><#else>` 条件判断 * `<#list hash_or_seq as var>` 遍历hash表或者collection(FTL称作sequence)的成员 * `<#macro name param1 param2 ... ><#nested param>` 宏,无返回...

    perl脚本学习范例

    Perl的控制结构包括条件语句(if...else,switch)和循环语句(for,while,foreach)。在编写脚本时,了解如何使用这些结构来控制程序流程至关重要。例如,一个简单的if...else语句: ```perl if (condition) { #...

    Freemark基础入门+深入

    - `<#if condition>`, `<#elseif condition>`, `<#else></#if>` 用于条件判断。 - `<#list hash_or_seq as var>` 遍历哈希表或序列的成员。 - `<#macro name param1 param2 ...><#nested param></#macro>` 定义宏...

    freemarker 介绍

    - `condition`在`<#if>`、`<#elseif>`和`<#else>`中定义条件判断,根据条件决定是否输出某个部分。 - `<#list hash_or_seq as var>`遍历哈希表或集合(序列)中的元素,`var`作为当前项的引用。 - `...

    Delphi7调用动态库实现HMACSHA1及Demo

    SHA1(Secure Hash Algorithm 1)是一种广泛使用的哈希函数,可将任意长度的数据转化为固定长度的摘要。 在Delphi 7中,由于原生库不直接支持HMACSHA1,我们需要借助外部库,如VC++编译的DLL。在DLL中,我们通常...

    perl语言编程

    4. 控制结构:Perl支持if...else、while、for、foreach等控制流语句。例如: ``` if ($condition) { # do something } else { # do something else } ``` 5. 函数:Perl中的函数定义使用sub关键字,调用时无须...

    页面禁止各种浏览器后退.txt

    这里使用`History.pushState`方法来达到相同的效果。 4. **管理URL Hash**:最后,监听`hashchange`事件,以便在URL的hash部分发生变化时,也能添加一个新的历史记录。这是为了进一步确保用户无法通过修改URL来绕过...

    freemarker 完美实现

    - **条件判断**:`<#if condition><#elseif condition><#else></#if>`用于条件语句。 - **遍历**:`<#list hash_or_seq as var>`遍历哈希表或集合(sequence)的成员。 - **宏和函数**: - `...

    EssentialPerl.pdf

    - **替换**:可以使用正则表达式进行替换操作,如`s/pattern/replacement/g;` - **分割**:可以使用`split`函数来分割字符串,如`@words = split / /, $string;` #### 4. 数组 数组是Perl中最常用的数据结构之一,...

    软件自动升级知识大全

    如果需要升级,则需下载新版本的可执行文件,并使用一个中间程序(如`FastCopy.exe`)来完成实际的文件替换工作。在此过程中,还需要确保当前程序被关闭,以便能够顺利替换文件。 ```vb ' 下载新版本 Sub ...

    perl入门-初学不错的选择

    - **条件判断**:使用`if`、`elsif`、`else`来实现条件分支。 - 示例:```perl if ($age > 18) { print "成年人\n"; } elsif ($age > 12) { print "青少年\n"; } else { print "儿童\n"; } ``` - **循环...

    freemarker学习

    FreeMarker还提供了条件语句(if/else)、循环(foreach)和其他控制结构,以便在模板中实现更复杂的逻辑。例如,你可以根据数据模型中的某个值来决定是否显示某个段落。此外,还有许多内置指令,如`include`用于...

    FreeMarker学习教程

    例如,你可以创建一个简单的Java类,设置一些属性,然后在模板文件中使用`<#if>`、`<#list>`等控制结构和`${}`表达式来访问和展示这些数据。 FreeMarker的语法丰富多样,包括但不限于以下内容: - `<#...>`:用于...

Global site tag (gtag.js) - Google Analytics