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

其实,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. C#三元运算符

    ?:表达式1?表达式2:表达式3如果1为真则执行2,为假执行3

  2. webrtc学习——RTCPeerConnection

    The RTCPeerConnection interface represents a WebRTC connection and handles efficient streaming of da ...

  3. 启动 XPs 代理

    Xps代理:扩展了 1 : 运行sp_configure检查代理XPs 的 值. EXEC SP_CONFIGURE 'agent xps'查看run_value 值是否为0,如果为0:需要更改此设置 ...

  4. Solr使用初探——Solr的安装环境与配置

    Solr是一个apache名下很好用的开源索引.搜索工具,网上的资料虽多但很杂,笔者花了一天的时间对Solr进行了较为初步的研究,对Solr的基础应用做了一定的总结.文中涉及到的配置方法并不唯一,AP ...

  5. Angularjs2——TypeScript学习网站

    https://zhongsp.gitbooks.io/typescript-handbook/content/index.html

  6. Object-C类目(Category)

    类目是Object-C中最有用的一个特性.实质上,类目允许你为一个已存在的类添加一些方法而不用子类化该类,也不需要你了解该类的实现细节. 这是特别有用的,因为你可以给一个内建的对象添加方法.当你想在你 ...

  7. autorelease 的基本使用

    5-autorelease 的基本使用 0,引入 Person *p = [Persom new];[p release]; [p run]; [p run]; // 希望不立即释放,待 run执行完 ...

  8. html-----015---HTML ASCII 参考手册

    HTML 和 XHTML 用标准的 7 比特 ASCII 代码在网络上传输数据. 7 比特 ASCII 代码可提供 128 个不同的字符值. 7 比特 可显示的 ASCII 代码 <html&g ...

  9. 类库探源——System.Math 和 Random

    一.System.Math Math类:为三角函数.对数函数和其他通用数学函数提供常数和静态方法 命名空间: System 程序集 :   mscorlib.dll 继承关系: 常用属性: Math. ...

  10. ASP.NET的GET和POST方式的区别归纳总结

    表单提交中,ASP.NET的Get和Post方式的区别归纳如下 几点: 1. get是从服务器上获取数据,post是向服务器传送数据. 2.  get是把参数数据队列加到提交表单的ACTION属性所指 ...