1. 程式人生 > >演算法練習02 實現數字千分位分割

演算法練習02 實現數字千分位分割

題目(2018-11-18)

輸入一個數字,將數字按照用逗號分隔,例如輸入1234.56,結果是1,234.56

實現

關鍵點是,這種分隔方法是從右至左的分隔,用普通的slice方法是從左至右的分隔,例如:

12345正確的結果是12, 345,而用普通的slice方法結果是123, 45

如果圖簡單,可以直接使用內建的方法:

// 內建的方法
Number.toLocalString();

const a = 12345.11;
console.log(a.toLocalString()); // 123,45.11

如果是為了鍛鍊演算法,則需要手寫:

/**
  * 輸入陣列,返回按照位數分割的陣列
  * @param number 傳入的數字
  * @param range 按照此位數將數字分割
  * @returns {string} 返回用逗號分隔的字串
  */
  
const splitStr = (number, range = 3) => {
  let str = number.toString();
  const[left, right] = str.split('.');
  const strArr = left.split('').reverse();
  let result = [];
  for (let i = 0; i < strArr.length; i += range) {
    result.push(strArr.slice(i, i + range).reverse().join(''))
  }
  return `${result.reverse().join(',')}.${right}`
};

const a = 12345.11;
console.log(splitStr(a)); // 123,45.11