Javascript 对数组进行分组和求和
我试图动态地检索、计算和存储数组中的一些信息 我所掌握的资料如下:Javascript 对数组进行分组和求和,javascript,arrays,Javascript,Arrays,我试图动态地检索、计算和存储数组中的一些信息 我所掌握的资料如下: var myArrayID = []; myArrayID = ['1', '2', '3', '4', '5', '1', '2', '3', '4', '5', '1', ........ '5']; //100 ID in myArrayID that has been sorted in order var myArrayScore = []; myArrayScore = ['100', '
var myArrayID = [];
myArrayID = ['1', '2', '3', '4', '5', '1', '2', '3', '4', '5', '1', ........ '5'];
//100 ID in myArrayID that has been sorted in order
var myArrayScore = [];
myArrayScore = ['100', '70', '80', '88', '23', '99', ....... '20'];
//100 Score in myArrayScore that has been sorted in order
总之
myArrayID[0]
引用了myArrayScore[0]
--->ID 1的得分为100
myArrayID[99]
引用了myArrayScore[99]
--->ID5的得分为20分
我想在不使用硬编码方法的情况下获得每个ID的总分 我的方法是
var ID1 = 1;
var ID2 = 2;
var ID3 = 3;
var ID4 = 4;
var ID5 = 5;
var ID1Score = 0;
var ID2Score = 0;
var ID3Score = 0;
var ID4Score = 0;
var ID5Score = 0;
for(var i in myArrayID)
{
if(myArrayID[i] === ID1)
{
ID1Score += myArrayScore[i];
}
if(myArrayID[i] === ID2)
{
ID1Score += myArrayScore[i];
}
if(myArrayID[i] === ID3)
{
ID1Score += myArrayScore[i];
}
if(myArrayID[i] === ID4)
{
ID1Score += myArrayScore[i];
}
if(myArrayID[i] === ID5)
{
ID1Score += myArrayScore[i];
}
}
这种方法可行,但它是硬编码的
我可以知道是否有任何方法可以动态编码吗
从某种意义上说,即使我的数组发生了变化(假设我有9个ID),但它仍然是按排序顺序排列的,并且仍然包含相同的长度。尝试类似的方法
var outputMap = {};
myArray.forEach(function(val,index){
outputMap[val] = outputMap[val] || 0;
outputMap[val] += myArrayScore[index];
});
现在,outputMap
将有一个针对每个ID的总分值
演示
var myArrayID=['1','2','3','4','5','1','2','3','4','5'];
var myArrayScore=['100','70','80','88','23','100','70','80','88','23'];
var outputMap={};
myArrayID.forEach(函数(val,index){
outputMap[val]=outputMap[val]| | 0;
outputMap[val]+=parseInt(myArrayScore[index],10);
});
document.body.innerHTML+=JSON.stringify(outputMap,0,4)代码>
var myArrayID=['1','2','3','4','5','1','2','3','4','5'];
var myArrayScore=['100','70','80','88','23','100','70','80','88','23'];
var_f={};
myArrayID.forEach(函数(el,i){
如果(_f.hasOwnProperty(el)){
_f[el]+=+myArrayScore[i];
}
否则{
_f[el]=+myArrayScore[i];
}
});
警报(JSON.stringify(_f));
//第一名得分:
警惕(“第一分:+_f[“1”);
//第二名得分:
警惕(“第二分:+_f[“2”])代码>您可以使用对象对结果进行分组和迭代
至少你需要转换成数字
var myArrayID=['1','2','3','4','5','1','2','3','4','5','1','5'],
myArrayScore=['100','70','80','88','23','99','20','8','9','10','11','12'],
分数={};
myArrayID.forEach(函数(索引){
分数[指数]=(分数[指数]| 0)++myArrayScore[指数]| 0;
});
document.write(''+JSON.stringify(分数,0,4)+'')代码>