算法练习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

你可能感兴趣的:(算法练习02 实现数字千分位分割)