toLocaleString / slice / substring

地下城3F-計算機 :
想說這任務應該不會太難吧(總是太天真),但一但開始執行後,就會冒出好多好多問題
使用哪種方式切版? GRID
使用哪種方式寫邏輯? 就vue吧
使用哪種計算機比較符合這樣的UI呈現? IOS 計算機
要如何輸入完後,取運算值和子來用?
要如何三位一撇?
以下來記錄這次的新收穫

..

基本邏輯

  1. 串連值(0-9 、00.)及運算子(+、-、x、/)至一個變數

  2. 點擊=時,用regEp切分出運算子和值 ex: 1x2+2 => [1, 2, 2] [x, +]

  3. 先乘除後加減,藉由運算子的位置,得知數值位置,再搭配splice 移除再新增

    1
    2
    3
    4
    5
    6
    let index = a.indexOf(items)
    while (index !== -1) {
    calculatorString.splice(index, 2, calculatorString[index] * calculatorString[index + 1])
    calculatorOperators.splice(index, 1)
    index = calculatorOperators.indexOf(items)
    }
  4. 顯示最終剩下的數值至變數

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幾乎用起來一樣,但還是有些為的差異性

  1. 第一個值比第二個值大的時候:substring會調換起、迄值; 而slice會回空值

    1
    2
    3
    let text = 'hsuifang'
    console.log(text.substring(5, 2)) // => "uif"
    console.log(text.slice(5, 2)) // => ""
  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"