javascript - 在 Java Script 中将 Roman 转换为 Integer
问题描述
我目前正在学习 LeetCode 中的数据结构和算法。我试图自己解决“罗马到整数”。我试图创建一个对象,并通过使用 for ...in 来访问键和键的值。所以,我想通过使用 console.log 检查我的密钥和密钥的值,但它没有显示任何内容。你能检查一下我错过了哪一部分吗?如果我问了一个愚蠢的问题,我很抱歉。我试图自己解决这个问题,但我找不到几个小时犯错的地方......如果还有其他错误,请告诉我!
这是我到目前为止所做的代码
function romanToNum(s) {
const roman = {
I :1,
IV:4,
V :5,
IV:9,
X :10,
// IL: 49,
L :50,
// IC:99,
C :100,
// ID:499,
D :500,
// IM:999,
M :1000
};
let answer = '';
for(let key in roman){
console.log(key);
console.log(roman[key]);
while (s >= roman[key]) {
answer += key;
s -= roman[key];
}
}
}
解决方案
您什么都看不到,因为无论何时您处于 for 循环块中时,该对象都是未知的。为了初始化对象并在函数的本地范围之外看到它romanToNum
,您可以做以下事情。
您可以全局初始化对象,而不将其封闭在函数的本地范围内;基本上摆脱 romanToNum 因为它无论如何都没有做任何事情。
从函数返回对象并将其捕获到全局变量中。
function getObject() {
return roman = {
I :1,
IV:4,
V :5,
IV:9,
X :10,
// IL: 49,
L :50,
// IC:99,
C :100,
// ID:499,
D :500,
// IM:999,
M :1000
};
let roman = getObject();
我不确定你为什么选择这样做,但在我看来,它似乎不是最喜欢的。
推荐阅读
- r - 为什么 xray::distributions 让我尝试在 Null 错误上设置属性?-R
- json - 如何在 Grails 4 JSON 视图中将地图呈现为属性
- r - 在 GAM 中仅加权一个协变量
- node.js - 从 Node.js 调用带有自签名证书的 URL:DEPTH_ZERO_SELF_SIGNED_CERT
- javascript - 单击按钮时数字不更新。控制台还给出了“游戏”未定义的错误。任何帮助表示赞赏
- python - 在 python 中获取子字符串是 O(n) 操作吗?
- express - Seneca web 与 express 崩溃但未找到模式
- node.js - TypeError:无法读取未定义的属性'Symbol(mongoose#Document#scope)'
- java - 在 jackson 的帮助下将 JSON 数组部分反序列化为 HashMap
- python-3.x - 尝试从具有条件转置的源数据帧行创建一个新数据帧