es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que estás utilizando la función _.findKey de lodash para intentar obtener el valor de loan.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:

    const field = _.get(this.$store.state.application.application, criteria.field);
    

    Esto debería retornar el valor de loan.amount (que actualmente es 500) en tu ejemplo.

Comments are closed.