1

生成罗马数字

这样生成有问题,到了 12 之后就不规律了

roman() {
  return new Array(30).fill('Ⅰ').map((lastLetter, i) => {
    return String.fromCharCode(lastLetter.charCodeAt(0) + i)
  })
}

下面这个正确的姿势

  var data = {
    ↈ: 100000,
    ↂↈ: 90000,
    ↇ: 50000,
    ↂↇ: 40000,
    ↂ: 10000,
    Ⅿↂ: 9000,
    ↁ: 5000,
    Ⅿↁ: 4000,
    Ⅿ: 1000,
    ⅭⅯ: 900,
    Ⅾ: 500,
    ⅭⅮ: 400,
    Ⅽ: 100,
    ⅩⅭ: 90,
    Ⅼ: 50,
    ⅩⅬ: 40,
    Ⅹ: 10,
    Ⅸ: 9,
    Ⅷ: 8,
    Ⅶ: 7,
    Ⅵ: 6,
    Ⅴ: 5,
    Ⅳ: 4,
    Ⅲ: 3,
    Ⅱ: 2,
    Ⅰ: 1
  } 
function g(num){
  var roman = ''
  if(num > 30000) return false
  var arr = []
  for (i in data) {
    while (num >= data[i]) {
      roman += i;
      num -= data[i];
    }
  }
  return roman
}

let arr = []
for (let index = 1; index < 26; index++) {
  arr.push(g(index))
}
console.log(arr)

手工

export function getRomanNumber() {
  return [
    'Ⅰ', 'Ⅱ', 'Ⅲ', 'Ⅳ', 'Ⅴ', 'Ⅵ', 'Ⅶ', 'Ⅷ', 'Ⅸ', 'Ⅹ',
    'ⅩⅠ', 'ⅩⅡ', 'ⅩⅢ', 'ⅩⅣ', 'ⅩⅤ', 'ⅩⅥ', 'ⅩⅦ', 'ⅩⅧ', 'ⅩⅨ', 'ⅩⅩ',
    'ⅩⅩⅠ', 'ⅩⅩⅡ', 'ⅩⅩⅢ', 'ⅩⅩⅣ', 'ⅩⅩⅤ', 'ⅩⅩⅥ'
  ]
}

西树先森
7.1k 声望926 粉丝

从事开发多年,前端、后端(go、Python、php)、服务架构都有涉猎,经历过大公司、创业公司,擅长前端及公司技术选型。