JavaScript 对象的总和值
Sum values of a JavaScript object
给定一个这种结构的对象
{
"1": {
"data": {
"a": 100,
"z": 100,
"e": 50
},
"percentage": {
"a": 10,
"z": 10,
"e": 41.09
}
},
"2": {
"data": {
"a": 10,
"z": 10,
"e": 20
},
"percentage": {
"a": 30,
"z": 40,
"e": 50
}
}
}
我想对这个对象的值求和以获得这个相似的结构
{
"data": {
"a": sum(a),
"z": sum(z),
"e": sum(e)
},
"percentage": {
"a": sum(a)/numberOfelements,
"z": sum(z)/numberOfelements,
"e": sum(e)/numberOfelements
}
}
因为我刚开始学习 js,我发现很难在这个映射中实现求和
Object.keys(filtered).map(key => ({
data: data[key].data,
percentage: data[key].percentage,
}))
如有任何帮助,我们将不胜感激
如果 numOfElements 表示数据对象中的元素,则当前实现即可。否则取消注释现有的注释行,并注释最后一个注释行之后的行。其中考虑了数据对象中的元素。
const obj = {
1: {
data: {
a: 100,
z: 100,
e: 50,
},
},
2: {
data: {
a: 10,
z: 10,
e: 20,
},
},
};
function groupBySum(obj) {
let data = {};
let percentage = {};
// let numberOfElements = 0;
for (let i in obj) {
// numberOfElements += 1;
for (let j in obj[i].data) {
if (data[j] === undefined) {
data[j] = obj[i].data[j];
} else {
data[j] += obj[i].data[j];
}
}
}
for (let i in data) {
// percentage[i] = data[i] / numberOfElements;
percentage[i] = data[i] / Object.keys(data).length;
}
return {
data,
percentage,
};
}
console.log(groupBySum(obj));
此外,将您当前的结构更改为数组格式也是个好主意,如下所示。
const obj = [
{
data: {
a: 100,
z: 100,
e: 50,
},
percentage: {
a: 10,
z: 10,
e: 41.09,
},
},
{
data: {
a: 10,
z: 10,
e: 20,
},
percentage: {
a: 30,
z: 40,
e: 50,
},
},
];
给定一个这种结构的对象
{
"1": {
"data": {
"a": 100,
"z": 100,
"e": 50
},
"percentage": {
"a": 10,
"z": 10,
"e": 41.09
}
},
"2": {
"data": {
"a": 10,
"z": 10,
"e": 20
},
"percentage": {
"a": 30,
"z": 40,
"e": 50
}
}
}
我想对这个对象的值求和以获得这个相似的结构
{
"data": {
"a": sum(a),
"z": sum(z),
"e": sum(e)
},
"percentage": {
"a": sum(a)/numberOfelements,
"z": sum(z)/numberOfelements,
"e": sum(e)/numberOfelements
}
}
因为我刚开始学习 js,我发现很难在这个映射中实现求和
Object.keys(filtered).map(key => ({
data: data[key].data,
percentage: data[key].percentage,
}))
如有任何帮助,我们将不胜感激
如果 numOfElements 表示数据对象中的元素,则当前实现即可。否则取消注释现有的注释行,并注释最后一个注释行之后的行。其中考虑了数据对象中的元素。
const obj = {
1: {
data: {
a: 100,
z: 100,
e: 50,
},
},
2: {
data: {
a: 10,
z: 10,
e: 20,
},
},
};
function groupBySum(obj) {
let data = {};
let percentage = {};
// let numberOfElements = 0;
for (let i in obj) {
// numberOfElements += 1;
for (let j in obj[i].data) {
if (data[j] === undefined) {
data[j] = obj[i].data[j];
} else {
data[j] += obj[i].data[j];
}
}
}
for (let i in data) {
// percentage[i] = data[i] / numberOfElements;
percentage[i] = data[i] / Object.keys(data).length;
}
return {
data,
percentage,
};
}
console.log(groupBySum(obj));
此外,将您当前的结构更改为数组格式也是个好主意,如下所示。
const obj = [
{
data: {
a: 100,
z: 100,
e: 50,
},
percentage: {
a: 10,
z: 10,
e: 41.09,
},
},
{
data: {
a: 10,
z: 10,
e: 20,
},
percentage: {
a: 30,
z: 40,
e: 50,
},
},
];