棋牌遊戲21點算法
1.21點算法 (該算法不是原創,不過忘記哪裏保存下來的,隻是感覺算法不錯,拿出來分享,若有冒犯可谘詢QQ2189563389 ,棋牌網站開發製作 https://www.yasewl.com/)
關鍵在於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.寫一個函數,它有個三個參數,id
、prop
、 value
。
如果 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
循環可以做到這一點。
聲明並初始化一個變量 total
為 0
。使用 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.生成隨機小數很棒,但隨機數更有用的地方在於生成隨機整數。
- 用
Math.random()
生成一個隨機小數。 - 把這個隨機小數乘以
20
。 - 用
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
最後更新:2017-07-06 12:02:31