Javascript 对象数组中字段的平均值
我有以下对象数组:Javascript 对象数组中字段的平均值,javascript,Javascript,我有以下对象数组: [ { items: { "1554038371930_ajhnms9ft" : { "mark" : 5 }, "1554038905938_le34li2cg" : { "mark" : 2 }, "1554039157958_kwab8rj5f" : {
[
{
items: {
"1554038371930_ajhnms9ft" : {
"mark" : 5
},
"1554038905938_le34li2cg" : {
"mark" : 2
},
"1554039157958_kwab8rj5f" : {
"mark" : 4
},
"1554039174126_p47ugwkbv" : {
"mark" : 1
}
}
},
{
items: {
"1554038371930_ajhnms9ft" : {
"mark" : 1
},
"1554038905938_le34li2cg" : {
"mark" : 5
},
"1554039157958_kwab8rj5f" : {
"mark" : 5
},
"1554039174126_p47ugwkbv" : {
"mark" : 2
}
}
},
{
items: {
"1554038371930_ajhnms9ft" : {
"mark" : 4
},
"1554038905938_le34li2cg" : {
"mark" : 3
},
"1554039157958_kwab8rj5f" : {
"mark" : 3
},
"1554039174126_p47ugwkbv" : {
"mark" : 4
}
}
},
{
items: {
"1554038371930_ajhnms9ft" : {
"mark" : 1
},
"1554038905938_le34li2cg" : {
"mark" : 2
},
"1554039157958_kwab8rj5f" : {
"mark" : 5
},
"1554039174126_p47ugwkbv" : {
"mark" : 4
}
}
}
]
我想得到chack项的平均值,结果如下:
{
items: {
"1554038371930_ajhnms9ft" : {
"mark" : 2.75
},
"1554038905938_le34li2cg" : {
"mark" : 3
},
"1554039157958_kwab8rj5f" : {
"mark" : 4.25
},
"1554039174126_p47ugwkbv" : {
"mark" : 2.75
}
}
}
实现这一点的最佳方法是什么?创建一个对象以包含最终结果,迭代项目并获得平均值。 例如:
这将适用于您,对数组和对象键使用一些循环: var itemsArr=[{ 项目:{ 1554038371930_ajhnms9ft:{ 马克:5分 }, 1554038905938_le34li2cg:{ 马克:2 }, 1554039157958_kwab8rj5f:{ 马克:4 }, 1554039174126_p47ugwkbv:{ 马克:1 } } }, { 项目:{ 1554038371930_ajhnms9ft:{ 马克:1 }, 1554038905938_le34li2cg:{ 马克:5分 }, 1554039157958_kwab8rj5f:{ 马克:5分 }, 1554039174126_p47ugwkbv:{ 马克:2 } } }, { 项目:{ 1554038371930_ajhnms9ft:{ 马克:4 }, 1554038905938_le34li2cg:{ 马克:3 }, 1554039157958_kwab8rj5f:{ 马克:3 }, 1554039174126_p47ugwkbv:{ 马克:4 } } }, { 项目:{ 1554038371930_ajhnms9ft:{ 马克:1 }, 1554038905938_le34li2cg:{ 马克:2 }, 1554039157958_kwab8rj5f:{ 马克:5分 }, 1554039174126_p47ugwkbv:{ 马克:4 } } } ]; var tempObj={}; itemsArr.forEachitemsObj=>{ 设items=itemsObj.items; Object.keysitems.forEachkey=>{ iftempObj[键]{ tempObj[key].mark+=items[key].mark; tempObj[key].count++; }否则{ tempObj[key]={ 标记:项[键]。标记, 计数:1 }; } }; }; Object.keystempObj.forEachkey=>{ tempObj[key]。mark=tempObj[key]。mark/tempObj[key]。计数; 删除tempObj[key].count; };
console.logtempObj;您还应该发布一些代码,显示您尝试过但未成功的内容。否则,您将获得否决票或关闭标志。请向我们展示您迄今为止尝试过的代码。
const items = {};
for (let i = 0; i < arr.length; i++) {
const keys = Object.keys(arr[i].items)
for (let j = 0; j < keys.length; j++) {
items[keys[j]] = items[keys[j]] === undefined ?
arr[i].items[keys[j]].mark :
(items[keys[j]] + arr[i].items[keys[j]].mark) / 2;
}
}