pregunta sencilla aquí. ¿Cómo puedo encontrar una clave en el estado donde el valor es verdadero? Por ejemplo. Digamos que tengo este conjunto como estado:
const [page, setPage] = useState({ 1: false, 2: false, 3: false, 4: true, 5: false, 6: false, 7: false });¿Cómo puedo devolver la clave donde el valor es verdadero? en este caso 4?
También me gustaría devolver la longitud de los pares clave/valor (7) e incluso poder recorrer los pares clave/valor, pero eso no es tan importante como mi pregunta principal.
Espero que puedas ayudar. Gracias.
Puede iterar a través de un objeto usando
Object.keys(myObject) que devolverá todas las claves.Object.values(myObject) que devolverá todos los valores.Object.entries(myObject) que devolverá todas las claves y valores.Debería verse así:
for (const [key, value] of Object.entries(page)) { if (value) { console.log(key); } }Puede usar Object.entries() para obtener una matriz de pares [key, value] , y luego puede usar todos los métodos/propiedades de matriz relevantes:
const page = { 1: false, 2: false, 3: false, 4: true, 5: false, 6: false, 7: false } const entries = Object.entries(page) console.log({ firstTrue: entries.find(([, v]) => v)?.[0] }) console.log({ numberOfKeys: entries.length })Sin embargo, sería más fácil almacenar el estado como una matriz:
const page = [false, false, false, true, false, false, false] console.log({ firstTrueIndex: page.findIndex(v => v) }) console.log({ numberOfItems: page.length })Prueba esto :
const [page, setPage] = useState({ 1: false, 2: false, 3: false, 4: true, 5: false, 6: false, 7: false }); let trueValue=[]; for (let i in page) { if (page[i] === true) trueValue.push(i); } console.log(trueValue);Este código iterará el objeto y dará la clave cuando el valor sea verdadero.