Где перебрать объект JSON - PullRequest
0 голосов
/ 13 марта 2020

Я создаю что-то с 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. подсчитать общее количество детей и внуков, которые есть у Джона.
  2. подсчитать количество внуков что Джон имеет.

Ну тогда:

Где бы я написал функцию для этого при использовании Angular / Redux? Буду ли я делать это, прежде чем я получу свое состояние? После того, как я сделаю мой вызов API и получу мое состояние? В редуктор? В компоненте? Какой самый быстрый / лучший способ выполнить итерацию и получить те 2 счета, которые я хотел? Поскольку я знаю, что Angular имеет некоторые встроенные функции, будет ли у него более быстрый способ сделать это? Или через обычный JS?

И последний пункт:

Допустим, у меня есть какой-то братский компонент (жена Джона, Сью), который будет использовать такой же счет или информацию. Если я хочу сохранить свой код DRY, где я должен делать эти функции подсчета?

Использую ли я свое состояние из ранее, если количество информации будет другим? Допустим, это касается только девочек / внучек. И Джон предназначен для детей / внуков мужского пола.

Или я должен сделать два куска состояния для них (m & f) и отработать их?

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

1 Ответ

0 голосов
/ 13 марта 2020

Я думаю, что на многие ваши вопросы можно ответить, используя selectors.

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

1.) Вы можете сделать множество селекторов. Может быть, вы можете сделать селектор, который принимает ввод имени (строки) и может дать вам количество дочерних элементов, которые у него есть. И еще один селектор, который дает вам количество внуков, которые есть у этого имени. Затем вы можете объединить его в своем компоненте. Может быть, вы можете сделать один селектор, который считает их обоих. Это зависит от вас.

2.) Ответил в 1.

3.) Вы могли бы написать его как селектор в, возможно, selectors.ts внутри папки магазина и затем передать эти селекторы. функции в аргументе select магазина.

4.) Самый быстрый и лучший способ - использовать простую библиотеку JS или JS, например loda sh. У Angular есть много встроенных вещей, но это библиотека UI / View, а не обычная JavaScript библиотека для более быстрых операций.

5.) У меня был бы один кусочек состояния, как упоминалось ранее использование функций селектора для преобразования состояния в интересующие меня данные.

...