一次迭代并访问多个映射(JavaScript)

一次迭代并访问多个映射(JavaScript),javascript,maps,Javascript,Maps,我有各种各样的地图,它们有相同的键,但值不同——我试图计算地图每个维度的平均值。例如,我可能有三张有3个关键点的地图-这个数字可能会改变,关键点的数量也可能会改变 var a = new Map ([["wordOne", 153], ["wordTwo", 24], ["wordThree", 73]]); var b = new Map ([["wordOne", 346], ["wordTwo", 693], ["wordThree", 124]]); var c = new Map ([

我有各种各样的地图,它们有相同的键,但值不同——我试图计算地图每个维度的平均值。例如,我可能有三张有3个关键点的地图-这个数字可能会改变,关键点的数量也可能会改变

var a = new Map ([["wordOne", 153], ["wordTwo", 24], ["wordThree", 73]]);
var b = new Map ([["wordOne", 346], ["wordTwo", 693], ["wordThree", 124]]);
var c = new Map ([["wordOne", 34], ["wordTwo", 4352], ["wordThree", 93]]);
我试图复制下面的等式,这样我就可以从我选择的3个不同的地图中得到该键的平均值

[(a_1 + b_1 + c_1)/3]
[(a_2 + b_2 + c_2)/3]
[(a_3 + b_3 + c_3)/3]
然后我想把平均值和平均值代表的键一起存储在一个新的地图中


如何在JavaScript中创建一个for循环,该循环迭代选定的贴图,并对选定贴图的每个值执行平均方程,并使用相同的键将其存储在新贴图中?

要获得每个键的平均值,可以首先将所有贴图放在一个数组中。这将使对它们进行迭代成为可能。然后获取其中一个映射的所有键的列表,并对其进行迭代。这假定所有贴图都具有相同的键

var a=newmap([[“wordOne”,153],“wordTwo”,24],“wordThree”,73]);
VarB=新映射([[“wordOne”,346],“wordTwo”,693],“wordThree”,124]);
var c=新映射([[“wordOne”,34],“wordTwo”,4352],“wordThree”,93]);
//制作地图数组
设maps=[a,b,c];
//地图上每个键的平均值(即[平均值a、平均值b、平均值c])
//映射所有关键点(),然后平均映射
让平均值通过=[…映射[0].keys()].map(key=>[key,maps.reduce((sum,map)=>sum+map.get(key),0)/maps.length])
console.log(平均值)
//用这个做一张新地图

让average\u map=new map(averages\u over)
我不确定自己是否理解,但在每次迭代中访问每个键的每个值可能是其中之一:

var-mapOne=新地图([[“a”,153],“b”,24],“c”,73]);
var mapTwo=新地图([[“a”,346],“b”,693],“c”,124]);
var mapThree=新地图([[“a”,34],“b”,4352],“c”,93]);
//每个迭代中所有贴图的每个键。a+a+a/3B+b+b/3。。。等
maptree.forEach((v,k)=>{
log((mapOne.get(k)+mapotwo.get(k)+v)/3)
});
//每张地图的平均值
[…[mapOne]、…[mapTwo]、…[mapTwo]。forEach(m=>{
var-res=0;
forEach((v,k)=>{//a+b+c/3…等
res+=mapOne.get(k);
})
控制台日志(res/3)

})
使用普通JavaScript和映射方法

var-mapOne=新地图([[“a”,153],“b”,24],“c”,73]);
var mapTwo=新地图([[“a”,346],“b”,693],“c”,124]);
var mapThree=新地图([[“a”,34],“b”,4352],“c”,93]);
函数averageValuesKeyMaps(…映射)
{
//键的映射=>平均值
const averagesMap=新映射();
让
//获取第一个地图作为参考,
mapRef=maps[0],
//获取大小,假设每个贴图的大小相同
大小=mapRef.size,
//获取关键点,假设每个地图都有这些关键点
keys=映射[0]。keys()
//对于每个键中的键
对于(让钥匙中的钥匙)
{
//获取每个贴图当前键的每个值的平均值
让average=maps.reduce((acc,map)=>acc+map.get(key),0)/size;
//设置键=>average
平均值映射集(键,平均值);
}
//返回新的平均值地图
返回平均值;
}
//获取关键值的平均值映射
设averagesMap=averageValuesKeyMaps(mapOne,mapTwo,mapThree);
//用法示例
for(让averagesMap.entries()的[key,average]表示)
{ 
//用关键或平均值做某事
console.log(键,平均值);

}
请添加给定数据的所需结果。我并不真正想要结果。我想知道的是如何迭代多个地图及其内容,为前面提到的等式做好准备,好了吗?那么你从哪里得到
a_99
?这只是一个示例,显示了一个包含100个元素的地图。。。我的地图上有成千上万的地图elements@JimmyNeedles在您的示例中,不清楚
a_99
是来自具有100个值的映射,还是来自第100个映射的第一个值。您的示例使其看起来像是需要每个单独贴图的平均值的数组。换句话说:它看起来像
[(a_1+b_1+c_1)/3]
应该是
mapOne
的平均值,但你描述的是不同的东西。
映射[0]
之前的点是什么<代码>[…maps[0].keys()].map(key=>[key,maps.reduce((sum,map)=>sum+map.get(key),0)/maps.length])Hey@JimmyNeedles,
keys()
返回迭代器而不是数组,迭代器没有
map()
函数。所以
[…映射[0].keys]
将from
keys()
的迭代器放入一个数组中,然后可以调用
map()
打开。好的,很有趣。今天是我第一次遇到