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

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM