Estoy trabajando con Javascript para crear una función de mapeo que, dado un esquema, debería encontrar el valor del objeto del mapeador dentro de una variable de application .
Mi intento de hacer esto da como resultado un error indefinido y estoy tratando de averiguar qué necesito cambiar para que funcione correctamente, he creado un violín JS que también se puede encontrar aquí .
const application = { state: { outgoings: { credit: 0, food: 0 } } } const mapper = { "AppFoodSpend": "outgoings.food", "AppCreditSpend": "outgoings.credit" } for (const field in mapper) { console.log(application.state[mapper[field]]) // expected results should be credit 0 and food 0 } Para más contexto, tengo un objeto llamado application que contiene algunos campos, es posible que no siempre estén en el mismo orden. Mi objeto mapper contiene algunos pares clave/valor, y es el valor que me gustaría probar y encontrar en application . por ejemplo, el registro de mi consola debería estar recuperando algo como:
application.state.outgoings.foodapplication.state.outgoings.credit Es posible que no siempre estén en este orden, por lo que necesito (en cada iteración del mapeador) encontrar la clave en la variable de mi application .
¿Qué necesito cambiar aquí?
Cadenas como 'outgoings.food' no son válidas para navegar por una estructura de datos. Podrías usar algunas " lentes " lib o escribir algo como esto...
const mapper = { "AppFoodSpend": ["outgoings", "food"], "AppCreditSpend": ["outgoings", "credit"] } for (const field in mapper) { console.log( mapper[field].reduce( (ctx, path) => ctx[path], application.state ) ) }