i'm coding a decentralized app and i'm stuck. Here is my problem : i'm calling with async function and return an array with object :
const result = [
{ trait_type: "Neck Gear", value: "1" },
{ trait_type: "Alpha Score", value: "6" },
{ trait_type: "Generation", value: "Gen 0" },];
I need to access the line "Alpha score". I have to check if alpha score exist in this object. So i did this :
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)
}
}
I wanted to use the .hasOwnProperty() method but it returns to me FALSE. But alpha score value exist.
Thank you in advance for those who can unblock me ! :)
hasOwnProperty checks an object - you have an array of objects where Alpha Score is actually the value of one of the properties of one of the objects
console.log(result.find(r => r.trait_type == "Alpha Score"))
hasOwnProperty is used for checking keys like trait_type; not values like 'Alpha Score'.
Instead, you can just find an object for which the value for trait_type is equal to "Alpha Score", and then access the value property of the resulting trait object. You can do this using .find, see: 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
})();