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

其实,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. 【转载】NIO客户端序列图

    步骤一:打开SocketChannel,绑定客户端本地地址(可选,默认系统会随机分配一个可用的本地地址),示例代码如下: SocketChannel clientChannel = SocketCha ...

  2. C#Combobox显示名称保存代码

    private void Form1_Load(object sender, EventArgs e) { DataTable dt = new DataTable(); dt.Columns.Add ...

  3. jquery click事件的可选参数data的作用

    $("#ID").click({x:"value"},function (e) { alert(e.data.x); });

  4. LSJ_NHibernate第二章 ManagerPage

    前言: 项目为传统的三层架构,可以根据个人的需求进行拓展. 很多人都在质疑B层的作用,我认为B层才是核心,这个取决于业务的复杂度 项目的结构也比较的简单,我们先从最底层说起,ManagerPage,这 ...

  5. Android开发之Menu组件

    菜单Menu大致分为三种类型:选项菜单(OptionsMenu),上下文菜单(ContextMenu),子菜单(SubMenu). 1.选项菜单 在一个Activity界面中点击手机Menu键,在屏幕 ...

  6. mysql嵌套查询

    select * from(select t.`name` `name`,count(*) count from company t group by t.`name`) aa where aa.co ...

  7. 学习笔记7_Java_day11_JSP原理(5)

    4. jsp原理(理解) * jsp其实是一种特殊的Servlet > 当jsp页面第一次被访问时,服务器会把jsp编译成java文件(这个java其实是一个servlet类) > 然后再 ...

  8. RPC实现原理(HSF、dubbo) 从头开始(一)

    前言 阔别了很久博客园,虽然看了以前写的很多东西感觉好幼稚,但是还是觉得应该把一些自己觉得有用的东西和大家分享.废话不多说,现在开始进入正题. 之前的六年工作经验,呆过了一些大公司,每个在大公司呆过的 ...

  9. JS数值输入控制

    在html文本框录入数值时,可用如下方法进行控制判断. 整数:<input type="text" name="aaa" onkeypress=" ...

  10. js清空前后空格

    function trim(sValue){                var lastValue=this.replace(/(^\s*)|(\s*$)/g,"");     ...