En datos JSON, tengo ciertos valores de datos de moneda en el siguiente formulario:
const currencyData = [ { "₹": "INR" }, { "¥": "JPY" }, { "€": "EUR" }, { "£": "GBP" } ];Creé una función que acepta 2 parámetros, uno para 'cantidad' y otro para 'código de moneda', pero, ¿qué se puede hacer cuando el segundo parámetro es "$" o "¥", es decir, un símbolo de moneda? Mi intención es mapear el símbolo de moneda con los datos JSON anteriores y dar la salida relevante, como por ejemplo: se pasa "$", entonces debería filtrar la comparación con los datos JSON anteriores y pasar la salida "USD" y luego se puede pasar en la siguiente función
const currencyFormatterNew = (amount, currCode) => { let currencyCode; try { if (currCode == "undefined" || currCode == "") { currencyCode = ""; } else { currencyCode = currCode; return new Intl.NumberFormat("en-US", { style: "currency", currency: currencyCode, minimumFractionDigits: 0 }).format(amount); } } catch (err) { console.log(err); } }; La función se llama de la siguiente manera: {currencyFormatterNew(10000, "JPY")}
¿Cuál sería la solución óptima para mapear el 'símbolo de moneda' con los datos json anteriores y luego proporcionar el resultado requerido que podría usarse en la función creada?
Aquí está el enlace de codesandbox: https://codesandbox.io/s/selection-and-operation-antd-4-17-0-alpha-0-forked-2sqzt
const getCurrencyCode = (code) => { const k = currencyData.find(a => Object.keys(a) == code); return Object.entries(k)[0][1]; }puedes probar esto Si lo desea, puede cambiar la última declaración de devolución de la siguiente manera
return Object.values(k); // it will return an arrayDespués de que se haya cargado el JSON, almacene la matriz de datos currencyData en un objeto:
const currencyMap = Object.assign({}, ...currencyData)
Luego, puede usar el acceso a la propiedad [prop] para obtener el símbolo equivalente. Esto será mejor para el rendimiento ya que no necesita llamar a .find o similar cada vez que se llama a su función porque esas funciones hacen un bucle.
const currencyData = [ { "₹": "INR" }, { "¥": "JPY" }, { "€": "EUR" }, { "£": "GBP" } ]; const currencyMap = Object.assign({}, ...currencyData) console.log(currencyMap); let symbol = '₹'; console.log(currencyMap[symbol]);