Tengo dificultades para trabajar con un objeto devuelto por una llamada de GraphQl a dynamoDB. Le he dado a cada objeto anidado un número para una clave. Es el número que estoy tratando de usar para crear la matriz de claves, usando Object.keys()
const groupsContext = {"01":{"Status":"Active","Name":"Group 1"},"02":{"Status":"Active","Name":"Group 2"}} let groupKeys = Object.keys(groupsContext) console.log(groupKeys)Esta es la salida de la consola:
Array(2897) [ "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", … ]Probé esto en codepen y funciona, así que no estoy seguro de qué es diferente. Lo único que se me ocurre es que me falta algo entre crear el contexto de la aplicación e intentar crear las claves a partir del contexto.
Aquí está el código que uso para crear el contexto:
//Archivo de contexto
import { useContext, createContext } from "react"; export const GroupsContext = createContext(null); export function useGroupsContext() { return useContext(GroupsContext); }//Aplicación
import React, { useState, useEffect } from "react"; import { GroupsContext } from "./libs/context/groupsLib"; function App() { const [groupsContext, setGroupsContext] = useState(false); useEffect(() => { onLoad(); }, []); async function onLoad() { let apiGroups try { apiGroups = await API.graphql(graphqlOperation(queries.getQuery, { PK: "Status", SK: "Test" })); setGroupsContext(apiGroups.data.getQuery.FullGroups) } catch (e) { if (e !== "Error") { onError(e); } } } return ( <div> <GroupsContext.Provider value={{ groupsContext, setGroupsContext }}> <Routing /> </GroupsContext.Provider> </div> ) ); } export default App;//obtenerGrupos
import { useGroupsContext } from "../../libs/context/groupsLib"; export default function ActiveGroups() { const { groupsContext } = useGroupsContext() let groupKeys = Object.keys(groupsContext) console.log(groupKeys)Como puede ver, la matriz solo debe tener una longitud de dos. ¿Cómo puedo crear la matriz para mostrar solo las teclas numéricas?
Gracias a Nick P por sus pensamientos sobre propiedades enumerables. He modificado el código a esto:
let groupKeys = [] for (const key in groupsContext) { groupKeys.push(`${key}`); } console.log(groupKeys)