按书上的样例,慢慢理解。

其实,JAVASCRIPT也应该可以写出正规点的,封装性好的代码。

<html>
    <body>
        <script type="text/javascript">

            function findLivingCats() {

                var livingCats = {"Spot": true,
                    "Noog": false,
                    "Biech": true,
                    "Cathy": false,
                    };        

                var mailArchive = ["died 06/12/2002 (mother Yellow Bess): Cathy Hobbles the 2nd, Cathy",
                    "born 20/09/2004 (mother Yellow Bess): Noog Hobbles the 2nd, Noog",
                    "born 12/11/2012 (mother Yellow Bess): Biech Hobbles the 2nd, Biech",
                    ];

                function startsWith(str, pattern) {
                    return str.slice(0, pattern.length) == pattern;
                }

                function catNames(paragraph) {
                    var colon = paragraph.indexOf(":");
                    console.log("colon: ", colon);
                    console.log("return: ", paragraph.slice(colon + 2).split(", "));
                    return paragraph.slice(colon + 2).split(", ");
                }

                function addToSet(set, values) {
                    for (var i = 0; i < values.length; i++)
                        set[values[i]] = true;
                } 

                function removeFromSet(set, values) {
                    for (var i = 0; i < values.length; i++)
                        delete set[values[i]];
                }

                function handleParagraph(paragraph) {
                    if (startsWith(paragraph, "born")) {
                            addToSet(livingCats, catNames(paragraph));
                        }
                        else if(startsWith(paragraph, "died")) {
                            removeFromSet(livingCats, catNames(paragraph));
                        }

                }

                for (var mail = 0; mail < mailArchive.length; mail++) {
                    var paragraphs = mailArchive[mail].split("\n");
                    for (var i = 0; i < paragraphs.length; i++) {
                        handleParagraph(paragraphs[i]);
                    }
                }
                return livingCats;
            }
            var howMany = 0;
            for (var cat in findLivingCats())
                howMany++;
            console.log("There are currently ", howMany, " cats alive.")

        </script>
    </body>
</html>

Emily姨妈家的猫的更多相关文章

  1. JavaScript编程精解 初读笔记

    1.1 值 JavaScript里有6种基本类型的值: number.string.Boolean.object.function和undefined. 1.3.2 prompt和confirm 浏览 ...

  2. Eva 剧情解析

    Eva 剧情解析 来源 https://zhuanlan.zhihu.com/p/20864898 [0.写在前面的话] 相信和我年龄差不多的小伙伴们对<新世纪福音战士>( <Neo ...

  3. Andre Weil的一生

    在20世纪的数学家中,Andre Weil(1906-1998)以其渊博的学识.坎坷的经历和超凡的人格魅力成为引人注目的一员. 他无疑是20世纪最伟大的数学家之一.国际数学家大会把数学划分为19个大的 ...

  4. vs2010 快捷键大全

    vs2010 快捷键大全 VS2010版快捷键 Ctrl+E,D ----格式化全部代码 Ctrl+E,F ----格式化选中的代码 CTRL + SHIFT + B生成解决方案 CTRL + F7 ...

  5. tomcat从下载到使用

    话说,某天正在和周公聊天下大事.被急促的电话铃声召唤回来,所谓江湖救急,于是远程一看.竟然是需要使用tomcat(汤姆家的猫),于是... 下面关于下载和配置tomcat的过程. ①.使用tomcat ...

  6. vs2010的快捷键

    vs2010的快捷键 VS2008快捷键大全 Ctrl+m+Crtr+o折叠所有大纲Ctrl+M+Crtr+P: 停止大纲显示Ctrl+K+Crtr+C: 注释选定内容Ctrl+K+Crtr+U: 取 ...

  7. VS2008使用技巧及快捷键大全

    VS2008技巧,非常实用,非常提高效率. 1,Visual Studio 2008自带的1000多个 Windows 系统使用的各种图标.光标和动画文件在Visual Studio 2008的安装目 ...

  8. [转]vs2010 快捷键大全

    vs2010 快捷键大全 VS2010版快捷键 Ctrl+E,D ----格式化全部代码  Ctrl+E,F ----格式化选中的代码  CTRL + SHIFT + B生成解决方案  CTRL + ...

  9. Visual Studio shortcut keys

    VS2010 快捷键   Ctrl+E,D ----格式化全部代码  Ctrl+E,F ----格式化选中的代码  CTRL + SHIFT + B生成解决方案  CTRL + F7 生成编译  CT ...

随机推荐

  1. iOS之NSURLSessionDownloadTask下载

    #import "ViewController.h" @interface ViewController ()<NSURLSessionDownloadDelegate,NS ...

  2. Debian 6解决中文乱码

    DEBIAN下中文显示 一.首先检查LOCALE情况 说明:DEBIAN因为基于GNU所以,对不同地域进行了不同的包支持,以LOCALE形式存在. 1.挂载ISO文件包,前8个ISO包就可以(这里不在 ...

  3. hdu 2027 统计元音

    统计元音 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

  4. sqlserver 连不上的问题

    tcp ip  属性 ipall  属性改为1433

  5. sql 常用操作脚本代码

    ,--运行fy_mh库[use] use fy_mh ,--查询 mh_dblj表 select * from mh_dblj ,--更新 某个字段(把表的某个字段下的所有的数据清空)[update ...

  6. Ajax异步的回调函数执行了多遍

    问题: 在做下拉滚动加载时(类似于qq空间下拉加载),数据向下滚动一次,就会加载一次,即append一下,跟踪js后,发现回调函数执行了多次,导致append将上次的append结果append上了, ...

  7. C#下如何用NPlot绘制期货股票K线图(2):读取数据文件让K线图自动更新

    [内容介绍]上一篇介绍了K线图的基本绘制方法,但很不完善,本篇增加了它直接读取数据的功能,这对于金融市场的数据量大且又需要动态刷新功能的实现很重要. [实现方法] 1.需要一个数据文件,这里用的是直接 ...

  8. c#汉字与编码之间的转换(输出十六进制)

    /******************************************************************/ /*********************** ****** ...

  9. css滚动条样式

    1.横向滚动条:(abeamScroll) <div style="width:400px;height:200px;overflow-x:auto;overflow-y:hidden ...

  10. BCEC手动验证业务方法

    在每次割接或业务调整后手动执行并做好业务验证工作 一.研发区利用ansible手动执行巡检程序: 步骤1:登陆 10.254.3.4/opt/ansible 步骤2:手动执行 sh compute_c ...