Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/455.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript通过匹配值对2个数组进行分组和求和_Javascript_Arrays_Sum - Fatal编程技术网

Javascript通过匹配值对2个数组进行分组和求和

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];

我使用的是Javascript,我有两个数组,我需要将它们组合成一个数组,并将生成的数组传递给
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,最后一个解决方案是一个很好的选择,在我的系统上工作。。非常感谢科林