【发布时间】:2017-11-02 15:50:59
【问题描述】:
我正在尝试获取一个对象的唯一键,添加值并计算每个对象有多少个唯一键,但无法找到一个优雅的解决方案。
原始对象数组:
[{
"2017W40": 15.25
}, {
"2017W40": 16.5
}, {
"2017W40": 16.6
}, {
"2017W40": 11
}, {
"2017W40": 17.857142857142858
}, {
"2017W40": 13
}, {
"2017W41": 19
}, {
"2017W41": 20.25
}, {
"2017W41": 18.25
}, {
"2017W41": 13
}, {
"2017W41": 20.333333333333332
}, {
"2017W41": 20.5
}, {
"2017W41": 20.5
}, {
"2017W42": 19.5
}, {
"2017W42": 19.5
}, {
"2017W42": 20
}, {
"2017W42": 19.5
}, {
"2017W42": 19.333333333333332
}, {
"2017W42": 20
}, {
"2017W42": 20.5
}, {
"2017W43": 20
}, {
"2017W43": 20
}, {
"2017W43": 19.666666666666668
}, {
"2017W43": 19.6
}, {
"2017W43": 19.666666666666668
}, {
"2017W43": 19
}, {
"2017W43": 19.5
}, {
"2017W44": 21
}, {
"2017W44": 19.5
}, {
"2017W44": 20
}, {
"2017W44": 19.5
}]
求和对象:
{
"2017W40": 90.20714285714286,
"2017W41": 131.83333333333331,
"2017W42": 138.33333333333331,
"2017W43": 137.43333333333334,
"2017W44": 80
}
但我还想包括每个计数(这样我可以得到一个平均值,而不仅仅是总和)这是我正在使用的方法:
function getValueAvg(valsByKey) {
const dateObj = {};
for (let i = 0; i < valsByKey.length; ++i) {
for (const obj in valsByKey[i]) {
if (dateObj[obj]) {
// add them if exists already
dateObj[obj] = dateObj[obj] + valsByKey[i][obj];
} else {
// first
dateObj[obj] = valsByKey[i][obj];
}
}
}
所以要么是
的最终对象{
{"2017W40": 90.20714285714286, count:x},
{"2017W41": 131.83333333333331, count:x},
{"2017W42": 138.33333333333331, count:x},
{"2017W43": 137.43333333333334, count:x},
{"2017W44": 80, count:x}
}
或者只是值除以计数对我来说会产生奇迹。 “2017W40”:90.20714285714286/计数
【问题讨论】:
标签: javascript object key unique