地下城3F-計算機 :
想說這任務應該不會太難吧(總是太天真),但一但開始執行後,就會冒出好多好多問題
使用哪種方式切版? GRID
使用哪種方式寫邏輯? 就vue吧
使用哪種計算機比較符合這樣的UI呈現? IOS 計算機
要如何輸入完後,取運算值和子來用?
要如何三位一撇?
以下來記錄這次的新收穫
…
..
基本邏輯
串連值(0-9 、00.)及運算子(+、-、x、/)至一個變數
點擊=時,用regEp切分出運算子和值 ex: 1x2+2 => [1, 2, 2] [x, +]
先乘除後加減,藉由運算子的位置,得知數值位置,再搭配splice 移除再新增
1
2
3
4
5
6let index = a.indexOf(items)
while (index !== -1) {
calculatorString.splice(index, 2, calculatorString[index] * calculatorString[index + 1])
calculatorOperators.splice(index, 1)
index = calculatorOperators.indexOf(items)
}顯示最終剩下的數值至變數
Number.prototype.toLocaleString()
將這個方法用於此任務的三位一撇
- numObj.toLocaleString([locales [, options]])
- locales: 國家、區域的format
- options: 樣式(decimal(預設)、幣別、%、unit)、呈現等等..
MDN
String.prototype.slice()
Method1::: Use to remove the last character from a string
- extracts a section of a string and returns it as a new string, without modifying the original string.
- str.slice([begin[, end]])
- begin: 哪一個索引(起始為 0)開始提取。若是負的(ex: -3),等於是str.length + beginIndex(-3)
- end: 提取值至其索引,不包含其本身,ex: (0, 2), 取0, 1。 負數概念如begin。
MDN
String.prototype.substring()
Method2::: Use to remove the last character from a string
- returns the part of the string between the start and end indexes, or to the end of the string.
- str.substring(indexStart[, indexEnd])
- indexStart: 第幾個索引開始(起始為 0)提取。
- indexEnd[optional]: 至第幾個索引,其為不包含。若沒有寫則為至最後被包含
MDN
Differences between substring() and slice()
雖然slice和substring幾乎用起來一樣,但還是有些為的差異性
第一個值比第二個值大的時候:substring會調換起、迄值; 而slice會回空值
1
2
3let text = 'hsuifang'
console.log(text.substring(5, 2)) // => "uif"
console.log(text.slice(5, 2)) // => ""當一或兩個值是負數或NaN: substring會皆視作是0; 而slice視NaN為0, 視負數為從字串最後面數回來
1
2
3
4
5
6
7## substring
console.log(text.substring(-5, 2)) // => "hs"
console.log(text.substring(-5, -2)) // => ""
## slice
console.log(text.slice(-5, 2)) // => ""
console.log(text.slice(-5, -2)) // => "ifa"