【问题标题】:Count Number of Json Array that is Filtered from another Json Array计数从另一个 Json 数组中过滤出来的 Json 数组的数量
【发布时间】:2018-11-14 04:38:16
【问题描述】:

我有两个需要使用 Angular cli 6.0 嵌套的 json

我是 Angular 新手,所以我需要帮助..

Json 1

[{"Name": "Fields1",
"DFields":["Fields1_1","Fields1_2"]
},
{"Name": "Fields2",
"DFields":["Fields2_1"]
}]

json 2

[
{"Id": "1", "Fields1_1": 1 , "Fields1_2": 1, "Fields2_1: 1},
{"Id": "2", "Fields1_1": 1 , "Fields1_2": 0, "Fields2_1: 1} 
{"Id": "3", "Fields1_1": 1 , "Fields1_2": 1, "Fields2_1: null} 
]

循环遍历字段并计算其相应数据的更快方法是什么..哪个计数不应该为空或零..

样本应该返回一个数组..

Fields1_1 = 3
Fields1_2 = 2
Fields2_1 = 2

请注意,这些字段是动态的,可以根据 json 进行更改

【问题讨论】:

  • 请分享一些您为解决此问题所采取的代码或方法。

标签: angular angular-cli-v6


【解决方案1】:

RxJs v6 解决方案:)

    const json1 = [
  { "Name": "Fields1", "DFields": ["Fields1_1", "Fields1_2"] },
  { "Name": "Fields2", "DFields": ["Fields2_1"] }
];

const json2 = [
  { "Id": "1", "Fields1_1": 1, "Fields1_2": 1, "Fields2_1": 1 },
  { "Id": "2", "Fields1_1": 1, "Fields1_2": 0, "Fields2_1": 1 },
  { "Id": "3", "Fields1_1": 1, "Fields1_2": 5, "Fields2_1": null }
];

from(json2).pipe(
  map(obj => Object.keys(obj).map(k => { return { key: k, val: obj[k] } })),
  flatMap(kvPairArray => from(kvPairArray)),
  groupBy(kvPair => kvPair.key),
  filter(group => json1.map(a => a.DFields).reduce((acc, curr) => [...acc, ...curr], []).includes(group.key)),
  mergeMap(group => group.pipe(
    filter(groupEntry => groupEntry.val !== null && groupEntry.val !== 0),
    reduce<{key: string, val: number},number>((acc, groupEntry) => acc + groupEntry.val, 0),
    map(count => {
      return {
        key: group.key,
        count: count
      };
    })
  )),
  toArray()
).subscribe(result => console.log(result));

【讨论】:

  • 从 'rxjs/operators' 导入 { map, filter, tap, flatMap, mergeMap, reduce, groupBy}; ---我错过了什么吗?找不到 toarray 和 from
  • import { from } from 'rxjs/observable/from';从 'rxjs/operators' 导入 { toArray };
  • 它仍然说没有导出成员“来自”,但是在检查路径是否正确后,您是否有电子邮件或某种形式?请我想知道更多..
  • 你用的是哪个 rxjs 版本?
  • # RxJS 6 Stable 在我的阅读中说
猜你喜欢
  • 2020-11-25
  • 1970-01-01
  • 2018-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-08
  • 2016-11-08
相关资源
最近更新 更多