• 2017.5.2 Javascript练习之FreecodeCamp--21点算法


    1.21点算法

    关键在于case的排列;

    2.对象的访问方式:

    有两种方式访问对象属性,一个是点操作符(.),一个是中括号操作符([])。

    3.第二种访问对象的方式就是中括号操作符([]),如果你想访问的属性的名称有一个空格,这时你只能使用中括号操作符([])。

    4.中括号操作符的另一个使用方式是用变量来访问一个属性。当你需要遍历对象的属性列表或查表时,这种方式极为有用。

    5.当你创建了一个对象后,你可以用点操作符或中括号操作符来更新对象的属性。

    6.你也可以像更改属性一样给对象添加属性。

    7.我们同样可以删除对象的属性,例如:delete ourDog.bark;

    8.对象和字典一样,可以用来存储键/值对。

    如果你的数据跟对象一样,你可以用对象来查找你想要的值,

    而不是使用switch或if/else语句。当你知道你的输入数据在某个范围时,这种查找方式极为有效。

    9.有时检查一个对象属性是否存在是非常有用的,

    我们可以用.hasOwnProperty(propname)方法来检查对象是否有该属性。

    如果有返回true,反之返回 false

     检测对象是否存在某个属性,案例:

    10.JavaScript Object Notation 简称 JSON

    它使用JavaScript对象的格式来存储数据。

    JSON是灵活的,因为它允许 数据结构字符串数字布尔值字符串,和 对象 的任意组合。

    提示:数组中有多个 JSON 对象的时候,对象与对象之间要用逗号隔开。

     

    11.通过串联起来的点操作符或中括号操作符来访问JSON对象的嵌套属性。

    12.正如我们在前面的例子所见,JSON对象可以嵌套对象和数组。

    与访问嵌套对象一样,用中括号操作符同样可以访问嵌套数组。

     13.写一个函数,它有个三个参数,idpropvalue

    如果 value !='' 而且prop != 'tracks'collectionCopy[id][prop]=value;

    如果 value !='' 而且prop == 'tracks'collectionCopy[id][prop].push(value);

    如果 value == ''delete collectionCopy[id][prop];

     之前一直有问题:

    ①使用了else if,而不是if结构,判断第一个正确后,不执行下面的else if语句了

    ②value=“ ”,空格也是一个字符,所以不符合要求,应该是value=“”

    ③或,且符号记错,| 表示或,& 表示且

    14.JavaScript 中最常见的循环就是“for循环”。for循环中的三个表达式用分号隔开:

    for ([初始化]; [条件判断]; [计数器])

    初始化语句只会在执行循环开始之前执行一次。它通常用于定义和设置你的循环变量。

    条件判断语句会在每一轮循环的开始执行,只要条件判断为 true 就会继续执行循环。当条件为 false的时候,循环将停止执行。这意味着,如果条件在一开始就为 false,这个循环将不会执行。

    计数器是在每一轮循环结束时执行,通常用于递增或递减。

    使用 for 循环把从 1 到 5 添加进 myArray 中。for循环就是if条件语句的进化版。

     

     

    15.for循环可以按照我们指定的顺序来迭代,通过更改我们的 计数器,我们可以按照偶数顺序来迭代。

    写一个 for 循环,把从1到9的奇数添加到 myArray

    16.for循环也可以逆向迭代,只要我们定义好合适的条件。

    为了能够从后往前两两倒数,我们需要改变我们的 初始化条件判断计数器

    17.迭代输出一个数组的每个元素是 JavaScript 中的常见需求, for 循环可以做到这一点。

    声明并初始化一个变量 total0。使用 for循环,使得 total 的值为 myArr 的数组中的每个元素的值的总和。

    出错地方:total应该是全局变量,我一开始放到了for循环中

    18.如果你有一个二维数组,可以使用相同的逻辑,先遍历外面的数组,再遍历里面的子数组。嵌套for循环

    一次输出 arr 中的每个子元素。提示,对于内部循环,我们可以通过 arr[i].length 来获得子数组的长度,因为 arr[i] 的本身就是一个数组。

    19.另一种类型的 JavaScript 循环被称为while循环,因为它规定,当(while)条件为真,循环才会执行,反之不执行。

    while循环需要在外部定义循环变量

     

    20.一个例子函数:

    函数 lookUp 有两个预定义参数:firstName值和prop属性 。

    函数将会检查通讯录是否存在一个联系人的firstName属性等于firstName值,还会检查对应联系人是否存在 prop属性。

    如果它们都存在,函数返回prop属性对应的值。

    如果firstName 值不存在,返回 "No such contact"

    如果prop 属性不存在,返回 "No such property"

     

    21.计算机的行为只有两种:确定性和随机性。当你一步步地闯关来到这里就是确定行为,当你随意点了个链接就来到这里就是随机行为。

    而随机数最适合用来创建这种随机行为。

    Math.random()用来生成一个在0(包括0)到1(不包括1)之间的随机小数,因此Math.random()可能返回0但绝不会返回1。

    22.生成随机小数很棒,但随机数更有用的地方在于生成随机整数。

    1. Math.random() 生成一个随机小数。
    2. 把这个随机小数乘以 20
    3. Math.floor() 向下取整 获得它最近的整数。

    记住 Math.random() 永远不会返回 1同时因为我们是在用 Math.floor() 向下取整,所以最终我们获得的结果不可能有 20。这确保了我们获得了一个在0到19之间的整数。

    把操作连缀起来,代码类似于下面:

    Math.floor(Math.random() * 20);

     

    23.我们之前生成的随机数是在0到某个数之间,现在我们要生成的随机数是在两个指定的数之间。

     

    我们需要定义一个最小值和一个最大值。

     

    下面是我们将要使用的方法,仔细看看并尝试理解这行代码到底在干嘛:

     

    Math.floor(Math.random() * (max - min + 1)) + min

     

     

  • 相关阅读:
    Spring boot使用mybatis plus ,自己配置多数据源切换,不使用mybatis plus的自动切换数据源。如何配置? 5ab
    outlook2013 关闭后不能接收邮件了解决方法 5ab
    将SNAPSHOT包上传到Nexus私服 5ab
    springboot[2.3.4.RELEASE]application.properties常用配置 5ab
    JS实现中英文混合文字友好截取功能 5ab
    linux常用命令 5ab
    Maven将项目包deploy到nexus私服 5ab
    centos7(虚拟机)下安装nginx 5ab
    ASP.NET Core中使用SmtpClient发送邮件的方法代码
    .NET Core(C#)使用BarcodeLib生成条码图片数据及示例代码
  • 原文地址:https://www.cnblogs.com/hqutcy/p/6798798.html
Copyright © 2020-2023  润新知