gpt4 book ai didi

javascript - 我有两个包含一些重复信息的数据结构。有没有办法使用 .map 来减少这种重复?

转载 作者:行者123 更新时间:2023-11-30 06:13:39 25 4
gpt4 key购买 nike

我的任务是创建一个将数字转换为罗马数字的函数。我可以使用两种数据结构来完成此操作,但我想使用一种来完成此操作。我知道 .map 可以提供帮助,但我不太熟悉它。

function romanCovertion(num) {

// let nums = [ 1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1 ];
// let romanNums = [ 'M', 'CM', 'D', 'CD', 'C', 'XC', 'L', 'XL', 'X', 'IX', 'V', 'IV', 'I' ];
// original arrays above

let romanNums = [[1000, 'M'], [900, 'CM'], [500, 'D'], [400, 'CD'], [100, 'C'], [90, 'XC'], [50, 'L'], [40, 'XL'], [10, 'X'], [9, 'IX'], [5, 'V'], [4, 'IV'], [1, 'I']]

let myMap = new Map(romanNums)
//console.log(myMap.get(1000))

let roman = '';

for (let i = 0; i < nums.length; i++) {
let element = nums[i]
while (element <= num) {
roman += romanNums[i];
//console.log(roman)
num -= element;
//console.log(num)
}
}
return roman;
}

//romanCovertion(11)

最佳答案

您可以使用 for .. of 遍历 map ,如下所示:

function romanConvertion(number) {
const map = new Map([[1000, 'M'], [900, 'CM'], [500, 'D'], [400, 'CD'], [100, 'C'], [90, 'XC'], [50, 'L'], [40, 'XL'], [10, 'X'], [9, 'IX'], [5, 'V'], [4, 'IV'], [1, 'I']]);
let result = '';

for (const [arabic, roman] of map) {
while (arabic <= number) {
number -= arabic;
result += roman;
}
}

return result;
}

console.log(romanConvertion(11));
console.log(romanConvertion(954));

关于javascript - 我有两个包含一些重复信息的数据结构。有没有办法使用 .map 来减少这种重复?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57386341/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com