code refactor
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
export default function (oldRate, currentCurrency, allExchangeRates) {
|
||||
const exchangeRateMap = {};
|
||||
|
||||
for (let i = 0; i < allExchangeRates.length; i++) {
|
||||
const exchangeRate = allExchangeRates[i];
|
||||
exchangeRateMap[exchangeRate.currency] = exchangeRate;
|
||||
}
|
||||
|
||||
const toCurrencyExchangeRate = exchangeRateMap[currentCurrency];
|
||||
|
||||
if (!toCurrencyExchangeRate) {
|
||||
return '';
|
||||
}
|
||||
|
||||
const newRate = parseFloat(oldRate) / parseFloat(toCurrencyExchangeRate.rate);
|
||||
const newRateStr = newRate.toString();
|
||||
|
||||
if (newRateStr.indexOf('.') < 0) {
|
||||
return newRateStr;
|
||||
} else {
|
||||
let firstNonZeroPos = 0;
|
||||
|
||||
for (let i = 0; i < newRateStr.length; i++) {
|
||||
if (newRateStr.charAt(i) !== '.' && newRateStr.charAt(i) !== '0') {
|
||||
firstNonZeroPos = Math.min(i + 4, newRateStr.length);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return newRateStr.substr(0, Math.max(6, Math.max(firstNonZeroPos, newRateStr.indexOf('.') + 2)));
|
||||
}
|
||||
}
|
||||
+29
-13
@@ -1,27 +1,43 @@
|
||||
import utils from '../lib/utils.js';
|
||||
|
||||
export default function (value, options, keyName, valueName) {
|
||||
export default function (value, options, keyField, nameField, defaultName) {
|
||||
if (utils.isArray(options)) {
|
||||
for (let i = 0; i < options.length; i++) {
|
||||
const option = options[i];
|
||||
if (keyField) {
|
||||
for (let i = 0; i < options.length; i++) {
|
||||
const option = options[i];
|
||||
|
||||
if (option[keyName] === value) {
|
||||
return option[valueName];
|
||||
if (option[keyField] === value) {
|
||||
return option[nameField];
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (options[value]) {
|
||||
const option = options[value];
|
||||
|
||||
return option[nameField];
|
||||
}
|
||||
}
|
||||
} else if (utils.isObject(options)) {
|
||||
for (let key in options) {
|
||||
if (!Object.prototype.hasOwnProperty.call(options, key)) {
|
||||
continue;
|
||||
if (keyField) {
|
||||
for (let key in options) {
|
||||
if (!Object.prototype.hasOwnProperty.call(options, key)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
const option = options[key];
|
||||
|
||||
if (option[keyField] === value) {
|
||||
return option[nameField];
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (options[value]) {
|
||||
const option = options[value];
|
||||
|
||||
const option = options[key];
|
||||
|
||||
if (option[keyName] === value) {
|
||||
return option[valueName];
|
||||
return option[nameField];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return '';
|
||||
return defaultName;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user