使用JavaScript的罗马数字翻译器

使用JavaScript的罗马数字翻译器,第1张

使用JavaScript的罗马数字翻译器

错误的主要根源是,我定义的reduce方法不允许我在迭代时访问索引。我更新了我的reduce函数,然后经过一点调试就可以了:

var DIGIT_VALUES = {  I: 1,  V: 5,  X: 10,  L: 50,  C: 100,  D: 500,  M: 1000};var each = function(collection, iterator) {  if (Array.isArray(collection)) {    for (var i = 0; i < collection.length; i++) {      iterator(collection[i], i, collection);    }  } else {    for (var key in collection) {      iterator(collection[key], key, collection);    }  }};var reduce = function(collection, iterator, total) {  if (total == undefined) {    total = collection.shift();  }  each(collection, function(val, i) {    total = iterator(total, val, i);  })  return total;};var translateRomanNumeral = function(roman) {  if (typeof(roman) !== 'string') {    return null;  }  if (!roman) {    return 0;  }  // if it's not in the digit values object, return null  for (var i = 0; i < roman.length; i++) {    if (!(roman[i] in DIGIT_VALUES)) {      return null;    }  }  //with underscore:  return reduce(roman, function(memo, letter, i) {    var num = DIGIT_VALUES[letter];     //console.log(i);    //how do you acess the next item in a collection in reduce?    var next = DIGIT_VALUES[roman[Number(i) + 1]];    // console.log(Number(i) + 1);    // console.log(next);      if ( next === undefined || next <= num) {        return memo + num;        //console.log(memo);      }      else {        // var diff = num - prev;        // console.log(diff);        return memo - num;        // memo = memo + (next - num);      }    // return memo;  }, 0);};console.log(translateRomanNumeral("LXIV")); //returns 66 ---> should return 64console.log(translateRomanNumeral("IX")) // should return 9console.log(translateRomanNumeral("IV")) /// should return 4console.log(translateRomanNumeral("CI")); //working --> returns 101console.log(translateRomanNumeral("MMMMCCL")); // working ---> returns 4250.//works!


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5623085.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存