Javascript Currencie转换器

时间:2018-01-25 00:17:25

标签: javascript parsing object

我有这个对象:

{"keys":Number,
 "metal":Number}

我知道一把钥匙= 37种金属。所以,如果我有:

{"keys" = 0,
 "metal" = 42}

我需要一个可以将其转换为正确格式的函数:

{"keys" = 1,
 "metal"= 5}

我尝试过:

Methods.prototype.parseToCorrect = function(priceObj) {
var newTotal = {
    metal: Number,
    keys: Number
}
var decimals = priceObj.keys - Math.floor(priceObj.keys);

if (decimals !== 0) {
    var decimalPlaces = priceObj.keys.toString().split('.')[1].length;
    decimals = decimals.toFixed(decimalPlaces);
    var toRef = decimals * 37;
    newTotal.metal = toRef + priceObj.metal;
    newTotal.keys = priceObj.keys - decimals;
    var moreThanKey = newTotal.metal / 37;
    if (moreThanKey > 1) {
        newTotal.metal -= Math.floor(moreThanKey) * 37;
        newTotal.keys += Math.floor(moreThanKey);
    }
    return newTotal;
} else {
  var moreThanKey = priceObj.metal /37;
  if (moreThanKey > 1) {
      newTotal.metal -= Math.floor(moreThanKey) * 37;
      newTotal.keys += Math.floor(moreThanKey);
  }
    newTotal.metal = priceObj.metal;
    newTotal.keys = priceObj.keys;
    return newTotal;
}

}

说明: if(小数!== 0)表示解析的piceObj类似于:(向下)。我需要那些"键"是INTEGER

{"keys"=0.5,
 "metal" = 13}

所以,我的功能正常。但我认为它应该存在更好的方式?提前致谢

1 个答案:

答案 0 :(得分:0)

您缺少的部分是截断小数位,可以使用Number.trunc()来完成。以下内容针对此非常有限的情况执行您想要的转换。



function conversion(original) {
    var metal = original.keys * 37 + original.metal;
    return { keys: Math.trunc(metal/37)
           , metal: metal%37
           }
}

console.log( conversion({ keys: 0, metal: 42 }) )
console.log( conversion({ keys: 0.5, metal: 0 }) )