簡體   English   中英

如何從 JavaScript 中的 object 獲取密鑰?

[英]How do I get the keys from an object in JavaScript?

我在使用 GraphQl 調用 dynamoDB 返回的 object 時遇到困難。 我給每個嵌套的 object 一個數字作為鍵。 這是我嘗試使用 Object.keys() 創建鍵數組的數字

 const groupsContext = {"01":{"Status":"Active","Name":"Group 1"},"02":{"Status":"Active","Name":"Group 2"}} let groupKeys = Object.keys(groupsContext) console.log(groupKeys)

這是控制台 output:

Array(2897) [ "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", … ]

我在 codepen 上試過這個並且它有效所以我不確定有什么不同。 我唯一能想到的是,我在創建應用程序上下文和嘗試從上下文創建鍵之間遺漏了一些東西。

這是我用來創建上下文的代碼:

//上下文文件

import { useContext, createContext } from "react";

export const GroupsContext = createContext(null);

export function useGroupsContext() {
  return useContext(GroupsContext);
}

//應用程序

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;

//獲取組

import { useGroupsContext } from "../../libs/context/groupsLib";

export default function ActiveGroups() {
  const { groupsContext } = useGroupsContext()


let groupKeys = Object.keys(groupsContext)
console.log(groupKeys)

如您所見,數組的長度應該只有兩個。 如何創建數組以僅顯示數字鍵?

感謝 Nick P 對可枚舉屬性的思考。 我已經將代碼修改為:

let groupKeys = []
  for (const key in groupsContext) {
    groupKeys.push(`${key}`);
  }
  console.log(groupKeys)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM