2013-02-09 46 views
0

我已經創建了一個擲骰子函數,可以導出隨機骰子並對它們進行求和。將一筆數額劃分爲數組javascript

現在每個數字都從0-9連接到一個類,所以如果我得到數字4,它應該調用類「四」 所以我創建了一個從0-9開關。 但是,當我得到一個超過9的總和它給我的默認數字,因爲函數dosent知道11實際上是2個數字。 我在想它是否可以分割數字並將它們放入一個數組中,所以當我將它傳遞給開關時,它會變成「一」「一」。

任何想法?

var value = total; 
    switch(this.value){ 
     case 1: 
      value ="one"; 
      break 
     case 2: 
      value ="two"; 
      break 
     case 3: 
      value ="three"; 
      break 
     case 4: 
      value ="four"; 
      break 
     case 5: 
      value ="five"; 
      break 
     case 6: 
      value ="six"; 
      break 
     case 7: 
      value ="seven"; 
      break 
     case 8: 
      value ="eight"; 
      break 
     case 9: 
      value ="nine"; 
      break 
     case 0: 
      value ="zero"; 
      break 
     default: 
      value ="zero" 
    } 
+0

好,其更喜歡。 當我得到11的總和時,我想通過「one」+「one」類來調用開關,否則我需要無數的數字組合來調用每一筆數額。 – Dymond 2013-02-09 14:13:14

回答

1

您可以使用string split function爲:

var result = this.value.toString(10).split("").map(function(digit) { 
    return ["zero", "one", "two", "three", "four", "five", 
      "six", "seven", "eight", "nine"][digit]; 
}); 

(當然你也可以使用一個循環,而不是map;檢查this answer and its comments對數組的事情是如何工作的)

+0

嗯。我似乎無法得到它的工作方式。 – Dymond 2013-02-09 14:39:51

+0

@Dymond:啊,等一下,你既沒有打開'total',也沒有打開'value'變量,而是打開'this.value'屬性。 – Bergi 2013-02-09 14:47:41

0

將數字轉換爲字符串後,可以使用split()。然後遍歷結果數組並分配你的類。

var total = 11; 

var pieces = ("" + total).split(""); 

for(var i=0; i<pieces.length; i++) { 
    // your switch in here 
} 
+0

它幾乎工作:) 當我做一個console.log從塊的日誌是[「3」] [「4」]我需要刪除的「」點。是否有可能打印數字separly沒有點和squere括號 – Dymond 2013-02-09 14:37:50

+0

@Dymond最簡單的方法是改變條件''switch''使用'+ this,value'而不是'value'。或者你改變case語句來使用字符串而不是數字。 – Sirko 2013-02-09 14:41:29