2016-09-13 20 views
0

我試圖讓這把你的出生日期(年月月日日)的程序,用繩子和輸出你的「真實birthname」取代了號碼。使用Javascript - 將數字轉換成字符串

問題是環路僅輸出用於鍵入到提示和+ =與自身的最後一個數字的字符串。我有點希望它會循環遍歷循環,並在出生變量中添加一個接一個的字符串。

(這是我第一次自己的代碼,所以要溫柔):)

var birthDate = prompt("write your birthdate!"); 
birthDateSplitter = birthDate.split(""); 
len = birthDateSplitter.length, 
birthName = 0; 
var i = 0; 

for (i; i < len; i++) { 
    if (birthDateSplitter[i] == 9) { 
     birthName = "do"; 
    } else if (birthDateSplitter[i] == 8) { 
     birthName = "ka"; 
    } else if (birthDateSplitter[i] == 7) { 
     birthName = "mu"; 
    } else if (birthDateSplitter[i] == 6) { 
     birthName = "ssa"; 
    } else if (birthDateSplitter[i] == 5) { 
     birthName = "tto"; 
    } else if (birthDateSplitter[i] == 4) { 
     birthName = "ti"; 
    } else if (birthDateSplitter[i] == 3) { 
     birthName = "le"; 
    } else if (birthDateSplitter[i] == 2) { 
     birthName = "pa"; 
    } else if (birthDateSplitter[i] == 1) { 
     birthName = "bu"; 
    } else { 
     birthName = "vi"; 
    } 
    birthName += birthName; 
} 

alert("Your real birthname is " + birthName); 
+0

怎麼樣'birthname + = 「字」'? –

+3

好吧,'birthName ='覆蓋了以前的變量。最後使用'+ =',或者最後要使用'birthName + = birthName;'來使用兩個不同名稱的變量。 – Bergi

回答

0
if (birthDateSplitter[i] == 9) { 
    birthName += "do"; 
} else if (birthDateSplitter[i] == 8) { 
    birthName += "ka"; 
//... 

但更好的是,你可以擺脫if個S:

var birthDate = prompt("write your birthdate!"); 
var birthDateSplitter = birthDate.split(""); 
var len = birthDateSplitter.length; 
var birthName = ''; 
var i = 0; 
var birthNameParts = ['vi', 'bu', 'pa', 'le', 'ti', 'tto', 'ssa', 'mu', 'ka', 'do']; 

for (i; i < len; i++) { 
    birthName += birthNameParts[birthDateSplitter[i]]; 
} 
+0

非常感謝! (我甚至可以理解它) – Diggytael

0

您可以在迴路中 birthName + = 「你想要什麼」

0
var birthDate = prompt("write your birthdate!"); 
var birthDateSplitter = birthDate.split(""); 
var len = birthDateSplitter.length; 
var birthName = ''; 
var i = 0; 

for (i; i < len; i++) { 

if (birthDateSplitter[i] == 9) { 
    birthName += "do"; 
} else if (birthDateSplitter[i] == 8) { 
    birthName += "ka"; 
} else if (birthDateSplitter[i] == 7) { 
    birthName += "mu"; 
} else if (birthDateSplitter[i] == 6) { 
    birthName += "ssa"; 
} else if (birthDateSplitter[i] == 5) { 
    birthName += "tto"; 
} else if (birthDateSplitter[i] == 4) { 
    birthName += "ti"; 
} else if (birthDateSplitter[i] == 3) { 
    birthName += "le"; 
} else if (birthDateSplitter[i] == 2) { 
    birthName += "pa"; 
} else if (birthDateSplitter[i] == 1) { 
    birthName += "bu"; 
} else { 
    birthName += "vi"; 
} 

} 

alert("Your real birthname is " + birthName); 

也許「開關使用 - case「這裏將是一個更好的解決方案

0

這裏是如何,我會走近:

var birthDateSplitted = prompt('write your birthdate!').split(''), 
    nameParts = ['vi', 'bu', 'pa', 'le', 'ti', 'tto', 'ssa', 'mu', 'ka', 'do'], 
    birthName = birthDateSplitted.map(function(n) { return nameParts[n]; }).join(''); 

alert('Your real birthname is ' + birthName); 

https://jsbin.com/gisubop/edit?js,output

+0

感謝您的答案!希望對第三行有進一步的解釋。 .map和。的目的是什麼?加入這種情況? – Diggytael

+0

map函數將數組中的每個項目都做了一些處理。您可以在[MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map)上閱讀更多內容 - js文檔的一個很好的來源。 它在這種情況下所起的作用:從分裂的生日數字數組中取出每個數字,在namesParts中查找相應的部分。之後,我們有一個新的名稱部分陣列。爲了將它變成一個單詞,我們使用join將數組的項粘合到單個字符串中。 –

+1

.map似乎真的很有用,會試圖記住那一個。非常感謝澄清! (MDN是即時書籤btw) – Diggytael