Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/446.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求和和和平均值_Javascript - Fatal编程技术网

数组中的JavaScript求和和和平均值

数组中的JavaScript求和和和平均值,javascript,Javascript,作为一名javascript行乞者,我在求和和和平均数方面遇到了麻烦。我知道reduce是一个数学函数,但我不知道在这种情况下如何使用它。 因此,这是一个对象示例,我需要求和并获得以下各项的平均价格: { "id":"52838593-5263-41fa-b48b-98a824c6e4c1", "name":"Product", "info":[ {

作为一名javascript行乞者,我在求和和和平均数方面遇到了麻烦。我知道reduce是一个数学函数,但我不知道在这种情况下如何使用它。 因此,这是一个对象示例,我需要求和并获得以下各项的平均价格:

{
   "id":"52838593-5263-41fa-b48b-98a824c6e4c1",
   "name":"Product",
   "info":[
      {
         "id":"0a7e72d9-4b1d-4851-b4fc-ec2c427c79a7",
         "name":"1xproduct",
         "stats":{
            "sales":2,
            "avarage_price_per_pcs":"98.50",
            "amount":"197.00"
         }
      },
      {
         "id":"48df2906-e042-4790-85b4-0a8a298c2548",
         "name":"1xproduct",
         "stats":{
            "sales":7,
            "avarage_price_per_pcs":"492.86",
            "amount":"3450.00"
         }
      }
   ]
}
这是一个求和的例子,但如何求平均值呢?有没有更好的方法来总结这一点

var total = this.info.info.reduce(function (prev, cur) {
       return prev + cur.stats.sales;
 }, 0);
return total;

为了得到总数,你可以循环通过info数组,得到每个数组的数量,出于某种原因,你已经将其存储在一个字符串中,所以你首先要解析它,但仅此而已

function getSum()
{
   var sum = 0;
   for(var k = 0; k < data.info.length; k++)
   {
      sum += parseInt(data.info[k].amount);
   }
   return sum;
}

您期望的结果是什么?您尝试了什么?“我知道reduce是一个数学函数”-它不是,它是一个通过依次运行数组中每个项的函数来生成单个“东西”的函数。该函数可以做数学运算,但不一定要做。平均值是
sum/length
,可能是
sum/length
,但不清楚OP是在寻找平均值、模式还是中值。不管怎样,这更像是一道数学题,而不是一道编程题,所以并不是真正的主题。
function getAvg()
{
   return getSum() / data.info.length;
}