首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >计数从另一个Json数组中筛选出来的Json数组数量

计数从另一个Json数组中筛选出来的Json数组数量
EN

Stack Overflow用户
提问于 2018-06-05 03:21:04
回答 1查看 131关注 0票数 -1

我有两个json需要使用Angular cli 6.0进行嵌套。

我刚来angular,所以我需要帮助..

Json 1

代码语言:javascript
复制
[{"Name": "Fields1",
"DFields":["Fields1_1","Fields1_2"]
},
{"Name": "Fields2",
"DFields":["Fields2_1"]
}]

Json 2

代码语言:javascript
复制
[
{"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} 
]

循环字段并计算其相应数据的速度更快的方法是什么?该计数不应为空或零..

该示例应返回一个数组..

代码语言:javascript
复制
Fields1_1 = 3
Fields1_2 = 2
Fields2_1 = 2

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-05 04:14:39

RxJs v6解决方案:)

代码语言:javascript
复制
    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));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50687429

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档