我有一个javascript对象和id数组:
var ids = [46,44,49,47];
var obj = {
"46": {
"group": "A",
"temp": 26,
"humid": 36
},
"44": {
"group": "B",
"temp": 19,
"humid": 32
},
"49": {
"group": "B",
"temp": 20,
"humid": 31
},
"47": {
"group": "A",
"temp": 24,
"humid": 32
}
};
我想得到平均数 'temp'
各 'group'
. 我该怎么做?
我发现其他的例子可以解决这个问题,但是,这些例子假设 'group'
永远都是一样的。就我而言, 'group'
世界总是在变化。
所以本质上我需要找到存在多少个独特的组,然后返回平均值 'temp'
每一个的价值。
我尝试使用一些嵌套在一起的for循环,但很快就变得复杂了。。。
预期产出: avgTemps = {"A":25, "B": 19.5}
7条答案
按热度按时间7gcisfzg1#
在第一步中,您将获得数据中存在的唯一组名列表。然后,过滤出每组的温度并计算平均值。
还可以使用lodash函数从列表中删除重复条目(
_.uniq
)和对一组数字求和(_.sum
).hgqdbh6s2#
你可以用
Object.keys(obj)
获取组的每个ID。然后,您可以从以下组中获取值:
我们可以使用组值创建对象。
现在,如果您可以Mapobj,让我们创建每组的平均值。
最后我们可以计算平均温度。
kzmpq1sx3#
这应该稍微短一点:
kiz8lqtg4#
首先使用总和和计数创建目标对象,然后将其除以平均值:
请注意
ids
数组似乎有些过分,因为对象的属性可以通过Object.keys
.j7dteeu85#
功能性风格中的另一个示例)
tsPlayground
6l7fqoea6#
首先,我把所有独特的群体放在一个集合中进行区分。然后创建一个对象数组,并最终将所有平均值、计数和总数分配到对象数组中。并生成了预期的结果。
mnowg1ta7#
你可以这样做: