Tengo estos nombres de agua y quiero que al poner un input con un nombre de agua, la promesa me devuelva un resultado. El problema es que no devuelve nada, ¿cómo puedo solucionarlo?
const water = [ { nome: "Sant'anna", inStore: true }, { nome: "Levissima", inStore: false }, { nome: "Lete", inStore: true }, ]; let inStoreTrue = []; let inStoreFalse = []; water.forEach(({ nome, inStore }) => { if (inStore === true) { inStoreTrue.push({ nome }); } else { inStoreFalse.push({ nome }); } }); function checkWater(enter) { return new Promise((resolve, reject) => { if (enter === inStoreTrue) { resolve("la tua acqua è disponibile"); } else if (enter === inStoreFalse) { reject("La tua acqua non è disponibile"); } }); } let prom = checkWater("Sant'anna"); prom .then((risultato) => { console.log(risultato); }) .catch((err) => { console.log(err); });El problema es verificar enter === inStoreTrue y enter === inStoreFalse
inStoreTrue e inStoreFalse son matrices. Por lo tanto, no puede simplemente equiparar una cadena con una matriz. Debe verificar si la cadena está allí en la matriz con algunos métodos de matriz. Array.some para eso.
const water = [ { nome: "Sant'anna", inStore: true }, { nome: "Levissima", inStore: false }, { nome: "Lete", inStore: true }, ]; let inStoreTrue = []; let inStoreFalse = []; water.forEach(({ nome, inStore }) => { if (inStore === true) { inStoreTrue.push({ nome }); } else { inStoreFalse.push({ nome }); } }); function checkWater(enter) { return new Promise((resolve, reject) => { if (inStoreTrue.some((item) => item.nome === enter)) { resolve("la tua acqua è disponibile"); } else if (inStoreFalse.some((item) => item.nome === enter)) { reject("La tua acqua non è disponibile"); } }); } let prom = checkWater("Sant'anna"); prom .then((risultato) => { console.log(risultato); }) .catch((err) => { console.log(err); });