tengo el siguiente objeto
const someobj = {constantValues: {status: [{value: 1, key : "enabled"},{value: 0, key: "disabled"},{value: 3, key: "archived"}]}}Y la siguiente clave
const keyFilter = "status"Intento filtrar el objeto con el valor 3 de someobj, así que lo hago
const constantValueIsNumber = typeof someobj.constantValues.status[0].value === "number" ? true: false const val = someobj.constantValues[keyFilter].find(i => i.value === constantValueIsNumber? Number("3"): "3") console.log(val) // {value: 1, key: "enabled"}¿POR QUÉ está devolviendo 1, cuando estoy filtrando 3 y debería devolver
{value: 3, key: "archived"}Esto funciona para mí.
const someobj = {constantValues: {status: [{value: 1, key : "enabled"},{value: 0, key: "disabled"},{value: 3, key: "archived"}]}}; const keyFilter = "status"; const valueToCheck = "3"; const val = someobj.constantValues[keyFilter].find(i => i.value.toString() === valueToCheck.toString()); console.log(val);Convertimos todos los valores en cadenas para que funcionen tanto los números como las cadenas.
tu predicado no fue escrito correctamente; debe colocar paréntesis para definir el orden de las operaciones. El método .find() tiene que ser algo como esto
const val = someobj.constantValues[keyFilter].find(i => i.value === (constantValueIsNumber? 3 : "3"))
genera: val: {value: 3, key: 'archived'}