簡體   English   中英

在哪里迭代 JSON 對象

[英]Where to iterate through JSON object

我正在使用 Angular 構建一些東西並使用

我的對象具有具有特定值的對象。 讓我們假裝:

name: "john",
sex: "m"
children: [
  {
  name: "joe",
  sex: "m"
  children: [
    {
    name: "mary",
    sex: "f"
    children: [
      {
      name: "ryan",
      sex: "m"
      children: []
      }
    ]
    }
  ]
],
name: "sue",
sex: "f"
children: [
  {
  name: "joe",
  sex: "m"
  children: [
    {
    name: "mary",
    sex: "f"
    children: [
      {
      name: "ryan",
      sex: "m"
      children: []
      }
    ]
    }
  ]
]

可以說我想:

  1. 計算 john 的子孫總數。
  2. 數一數約翰有多少孫子孫女。

好吧:

  1. 使用 Angular/Redux 時,我會在哪里為此編寫函數? 在我得到我的狀態之前我會做嗎? 在我調用 API 並獲取狀態之后? 在減速機? 在組件中?
  2. 迭代並獲得我想要的 2 個計數的最快/最佳方法是什么? 因為我知道 Angular 有一些內置的東西,它有沒有更快的方法來做到這一點? 還是通過普通的JS?

最后一點:

  1. 假設我有一些兄弟組件(約翰的妻子,蘇)將使用這個類似的計數或信息。 如果我想讓我的代碼保持干燥,我應該在哪里制作這些計數函數?

如果某些信息計數會有所不同,我是否使用之前的狀態? 可以說這只是計算女童/孫女。 john's 是給男孩/孫子的。

或者我應該為這些(m&f)制作兩個狀態片並處理它們?

File Structure:
app
 |store
   |actions
   |models
   |reducers
   |effects
 |views
   |john
     |.html
     |.ts
   |sue
     |.html
     |.ts
 |app.ts etc

我認為您的很多觀點都可以通過使用selectors來回答。

https://ngrx.io/guide/store/selectors

1.) 您可以制作許多選擇器。 也許您可以制作一個選擇器,它接受名稱(字符串)的輸入,並可以為您提供它所擁有的孩子的數量。 另一個選擇器可以為您提供此名稱的孫子數量。 然后,您可以將其組合到您的組件中。 也許您可以制作一個同時計算兩者的選擇器。 由你決定。

2.) 在 1 中回答。

3.) 您可以將它作為選擇器寫入 store 文件夾內的也許selectors.ts中,然后可以在 store 的select參數中傳遞這些選擇器函數。

4.) 最快最好的方法是使用普通的 JS 或像 lodash 這樣的 JS 庫。 Angular 內置了很多東西,但它是一個 UI/View 庫,而不是一個讓普通 JavaScript 操作更快的庫。

5.) 我會有一個狀態片,就像前面提到的那樣,使用選擇器函數將狀態轉換為我感興趣的數據。

暫無
暫無

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

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