Javascript通过匹配值对2个数组进行分组和求和
我使用的是Javascript,我有两个数组,我需要将它们组合成一个数组,并将生成的数组传递给Javascript通过匹配值对2个数组进行分组和求和,javascript,arrays,sum,Javascript,Arrays,Sum,我使用的是Javascript,我有两个数组,我需要将它们组合成一个数组,并将生成的数组传递给Highcharts,但是数组需要分组并求和symbolArray中的每个匹配值 Input Arrays var symbolArray = ["GSK", "VOD", "VOD", "GSK", "VOD"]; var valueArray = [100, 220, 120, 230, 155];
Highcharts
,但是数组需要分组并求和symbolArray
中的每个匹配值
Input Arrays
var symbolArray = ["GSK", "VOD", "VOD", "GSK", "VOD"];
var valueArray = [100, 220, 120, 230, 155];
// Group symbolArray by each unique value (VOD, GSK) and
// summate the values in valueArray matching each unique value.
Output Arrays
var GroupBysymbolArray = ["GSK", "VOD"];
var GroupByvalueArray = [330, 495];
HighchartsArray = [GSK, VOD, 330, 495]
如果需要,我可以设置JSFIDLE。您可以通过以下步骤完成此操作:
- 创建一个空对象
obj
- 在符号数组上使用
。并将所有对应的值分组到它们的键。这样,forEach()
将键作为符号,将值作为相应值的数组obj
- 然后在对象上循环并计算每个符号的和
- 然后使用
Object.keys
Object.values
constobj={};
var symbolArray=[“GSK”、“VOD”、“VOD”、“GSK”、“VOD”];
var valueArray=[100220120230155];
symbolArray.forEach((sym,i)=>{
obj[sym]=(obj[sym]| |[]).concat(valueArray[i]);
})
for(让k在obj中){
obj[k]=obj[k]。reduce((ac,a)=>a+ac,0);
}
常量res=[…对象.键(obj),…对象.值(obj)];
log(res)
我将运行这两个数组,并将它们累加到一个对象,其中键是符号,值是总和。然后,您可以提取键和值:
var symbolArray=[“GSK”、“VOD”、“VOD”、“GSK”、“VOD”];
var valueArray=[100220120230155];
常数和={}
for(设i=0;i
注意:此代码段假定输入正确,并且两个数组都包含正确的数据类型且长度相同。
在“真实”场景中,您可能需要添加一些验证。“如果需要,我可以设置一个JSFIDLE。”-这会包含您在询问之前的实际尝试吗?如果没有,那我就看不出有什么意义了。了解CBroe,我试着在这里查找我的问题示例,然后发布电话,但找不到。谢谢Mureinik,这正是所需的,验证的要点很好。干杯ColinMureinik,我已经将上述内容集成到我的代码中,并根据需要对Highcharts进行分组,这非常好。感谢ColinThanks Maheer Ali,我现在有两个选项,我将测试这两组代码,并将其中一组集成到我的系统中。干杯Colin@colin不客气。我仅使用一个
reduce()
添加了另一个解决方案。请务必查看Hi Maheer Ali,最后一个解决方案是一个很好的选择,在我的系统上工作。。非常感谢科林