Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Redux 在何处迭代JSON对象_Redux_Json_Angular_Ngrx_Angular Redux - Fatal编程技术网

Redux 在何处迭代JSON对象

Redux 在何处迭代JSON对象,redux,json,angular,ngrx,angular-redux,Redux,Json,Angular,Ngrx,Angular Redux,我正在用角度和角度来建造一些东西 我的对象具有具有特定值的对象。让我们假装: name: "john", sex: "m" children: [ { name: "joe", sex: "m" children: [ { name: "mary", sex: "f" children: [ { name: "ryan", sex: "m" children: [] } ]

我正在用角度和角度来建造一些东西

我的对象具有具有特定值的对象。让我们假装:

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: []
      }
    ]
    }
  ]
]
假设我想:

  • 数一数约翰的子孙总数
  • 数一数约翰有多少孙子
  • 那么:

  • 使用Angular/Redux时,我将在何处为此编写函数?在我得到我的状态之前我会这么做吗?在我调用API并获取状态之后?在减速机里?在组件中
  • 迭代并获得我想要的2个计数的最快/最好的方法是什么?因为我知道Angular有一些内置的东西,有没有更快的方法呢?还是通过普通JS
  • 最后一点:

  • 假设我有一些兄弟姐妹(约翰的妻子苏)将使用类似的计数或信息。如果我想保持代码干燥,我应该在哪里制作这些计数函数 如果某些信息计数将不同,我是否使用以前的状态?假设这只是计算女性子女/孙女。约翰的是给男童/孙子的

    或者我应该为这些(m&f)制作两个状态片,并将其处理掉

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

    我认为你的许多观点可以通过使用
    选择器来回答

    1.)您可以制作多个选择器。也许您可以创建一个选择器,它接受名称(字符串)的输入,并可以为您提供它所拥有的子项的数量。还有另一个选择器,它可以告诉你这个名字的孙辈数量。然后可以将其组合到组件中。也许你可以做一个选择器来计算它们。这取决于你

    2)回答1

    3.)您可以将其作为选择器写入存储文件夹中的
    selectors.ts
    ,然后可以在存储的
    select
    参数中传递这些选择器函数

    4.)最快和最好的方法是使用普通JS或类似lodash的JS库。Angular内置了很多东西,但它是一个UI/视图库,而不是一个使普通JavaScript操作更快的库


    5.)我会有一个状态片,就像前面提到的那样,使用选择器函数将状态转换为我感兴趣的数据。

    嘿!谢谢你的回复。我只是做了一个编辑,我会先做男性,然后再做女性。(我的实际项目的范围要大一点,我会多次分支)你还会有一部分状态并使用选择器函数吗?但无论哪种方式,我都会立即阅读选择器。非常感谢你的帮助!:)是的,我个人会的。您可以将选择器视为
    getter
    函数。谢谢。所以我有一堆不同的组件,每个组件可能使用2-4个不同的选择器,或者有时使用相同的选择器。您能为每个组件制作一个组件名称选择器吗?或者只是一个大的通用选择器.ts?还有一个附带问题——我目前没有index.ts。我刚刚在app.module中的StoreModule.forRoot({})中添加了不同的简化程序。这是一种糟糕的做法吗?请查看StoreModule.forFeature,将每个功能缩减器注册为功能。我会将所有选择器函数放在selectors.ts中,导出它们,然后在必要时导入。