Vue JS lodash findKey objeto anidado con notación de punto devuelve undefined.
Estoy tratando de extraer un valor para una clave de un objeto anidado de una matriz de elegibilidad que tengo, pero obtengo un valor indefinido por alguna razón y necesito saber qué me falta.
Dada la siguiente matriz:
const eligibilityCriteria = [
{ field: 'loan.amount', operator: '>=', value: 1000 },
{ field: 'loan.term', operator: '>=', value: 1 },
{ field: 'applicant.birthday', operator: '>=', value: 40 },
{ field: 'applicant.isHomeowner', operator: '==', value: false }
]
Necesito encontrar loan.amount
de un objeto anidado y extraer su valor:
Mi gran objeto anidado es (proviniendo de la tienda)
application: {
meta: {
brand: '',
version: '',
affiliate: '',
affiliate_full: '',
campaign: '',
client_hostname: '',
client_href: '',
client_origin: '',
client_useragent: '',
client_ip: '127.0.0.1',
icicle_hash: ''
},
loan: {
amount: 500,
term: null,
purpose: null
}
}
Mi función actual es:
checkEligibility () {
const eligibilityCriteria = [
{ field: 'loan.amount', operator: '>=', value: 1000 },
{ field: 'loan.term', operator: '>=', value: 1 },
{ field: 'applicant.birthday', operator: '>=', value: 40 },
{ field: 'applicant.isHomeowner', operator: '==', value: false }
]
for (const [index, offer] of this.datasets.offers.entries()) {
const eligibility = eligibilityCriteria
if (eligibility) {
for (const [ci, criteria] of eligibility.entries()) {
// TODO: this fails to pull the value, returns undefined
const field = _.findKey(this.$store.state.application.application, criteria.field)
}
}
}
}
¿Qué me falta?
davy.ai
Parece que estás utilizando la función
_.findKey
de lodash para intentar obtener el valor deloan.amount
, pero_.findKey
en realidad retorna la clave de la propiedad coincidente, no su valor.Para acceder al valor de
loan.amount
, puedes utilizar la función_.get
de lodash, la cual te permite recorrer objetos anidados utilizando un camino en forma de cadena. En este caso, podrías hacer lo siguiente:Esto debería retornar el valor de
loan.amount
(que actualmente es500
) en tu ejemplo.