Estoy codificando una aplicación descentralizada y estoy atascado. Aquí está mi problema: llamo con la función asíncrona y devuelvo una matriz con el objeto:
const result = [ { trait_type: "Neck Gear", value: "1" }, { trait_type: "Alpha Score", value: "6" }, { trait_type: "Generation", value: "Gen 0" },];Necesito acceder a la línea "Puntuación alfa". Tengo que comprobar si existe puntuación alfa en este objeto. Así que hice esto:
async function checkAlpha() { try { const checkAlphaTxn = await traitsContract.compileAttributes([4]) .then((result) => { // console.log(result.hasOwnProperty("Alpha Score")) //return false console.log(result) //return array above }) } catch (error) { console.log(error) } }Quería usar el método .hasOwnProperty() pero me devuelve FALSO. Pero el valor de la puntuación alfa existe.
¡Gracias de antemano a aquellos que puedan desbloquearme! :)
hasOwnProperty verifica un objeto : tiene una matriz de objetos donde Alpha Score es en realidad el valor de una de las propiedades de uno de los objetos
console.log(result.find(r => r.trait_type == "Alpha Score"))hasOwnProperty se usa para comprobar claves como trait_type ; no valores como 'Puntuación alfa'.
En su lugar, puede simplemente encontrar un objeto para el cual el valor de trait_type sea igual a "Alpha Score" y luego acceder a la propiedad de value del objeto de rasgo resultante. Puede hacer esto usando .find , vea: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find?retiredLocale=nl
const getResults = async () => { return [ { trait_type: "Neck Gear", value: "1" }, { trait_type: "Alpha Score", value: "6" }, { trait_type: "Generation", value: "Gen 0" } ]; }; (async () => { const results = await getResults(); const alphaScoreTrait = results.find(t => t.trait_type === "Alpha Score"); if (!alphaScoreTrait) { console.log("No trait found with type 'Alpha Score'"); return; } console.log(alphaScoreTrait.value); // 6 })();