Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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 对象数组的每5个值求和_Javascript_Arrays_Javascript Objects - Fatal编程技术网

Javascript 对象数组的每5个值求和

Javascript 对象数组的每5个值求和,javascript,arrays,javascript-objects,Javascript,Arrays,Javascript Objects,假设我有一个长度不确定的对象数组,如下所示 jString = [ { "value": "2,335.47" }, { "value": "2,862.96" }, { "value": "2,217.31" }, { "value": "1,627.01" }, { "value": "1,103.52" }, { "value": "1,718.69" }, { "value": "

假设我有一个长度不确定的对象数组,如下所示

jString = [
  {
    "value": "2,335.47"
  },
  {
    "value": "2,862.96"
  },
  {
    "value": "2,217.31"
  },
  {
    "value": "1,627.01"
  },
  {
    "value": "1,103.52"
  },
  {
    "value": "1,718.69"
  },
  {
    "value": "1,992.83"
  },
  {
    "value": "3,796.26"
  },
  {
    "value": "3,800.43"
  },
  {
    "value": "2,128.62"
  },
  {
    "value": "2,661.56"
  }
]
我需要得到每5个元素的和平均值,并作为一个新数组返回

我想map函数会工作得最好,但它不适合我

函数sumAvg(arr){
var总和=0;
平均值=arr.map(功能(项目){

对于(var i=0;iMap,它不会按您想要的方式工作。您正在对每5个元素组进行计算,其中一些元素组会计算4次


你可以得到前五个元素,进行平均,将其存储在某个位置,然后删除它们。重复此操作直到数组为空

我将使用传统的循环和计数

让jString=[
{
“值”:“2335.47”
},
{
“值”:“2862.96”
},
{
“价值”:“2217.31”
},
{
“值”:“1627.01”
},
{
“值”:“1103.52”
},
{
“值”:“1718.69”
},
{
“价值”:“1992.83”
},
{
“值”:“3796.26”
},
{
“值”:“3800.43”
},
{
“值”:“2128.62”
},
{
“值”:“2661.56”
}
];
让结果=[];
设ctr=0;
设resIndex=0;
对于(索引=0;索引
这将返回json中5项总和的平均值。我假设这就是您要查找的内容,我不建议使用此sum=(item.value[I]+item.value[I+1]+item.value[I+2]+item.value[I+3]+item.value[I+4])/5;
因为您将遇到索引错误,特别是当json的长度未知时

如果要求和的平均值,将5个值相加后,请调整if语句,使其表示:

if i % 5 == 0 then
sum = sum/5;
end if

希望这能有所帮助。

您的问题有点不清楚,您想要的是每个连续5个元素的总和还是平均值。以下是获取总和的代码,以及如何从中获取平均值的其他注释

const data=[{“value”:“2335.47”},{“value”:“2862.96”},{“value”:“2217.31”},{“value”:“1627.01”},{“value”:“1103.52”},{“value”:“1718.69”},{“value”:“1992.83”},{“value”:“3796.26”},{“value”:“3800.43”},{“value”:“2128.62”},{“value”:“2661.56”};
//创建一个新数组
常数输出=[];
//虽然还有一些因素
而(data.length>0){
//从数组中剪接5个元素
const next=数据拼接(0,5)
//在这5个元素上加上'reduce'
//注1:如果你想得到平均值,只需加上`/5`
//直到这个表达式的末尾
//注2:我们必须从中的值字符串中删除逗号
//以便正确地分析它
const sum=next.reduce((a,b)=>{
返回a+Number.parseFloat(b.value.replace(/,/g');
}, 0);
//将字符串化和推送到输出数组。
向外推(和固定(2));
}

console.log(out);
假设您希望平均每5个元素意味着平均

0,1,2,3,4
1,2,3,4,5
2,3,4,5,6
3,4,5,6,7

我假设这是因为您的代码似乎正在尝试这样做

这将提供您需要的结果

const输入=[
{
“值”:“2335.47”
},
{
“值”:“2862.96”
},
{
“价值”:“2217.31”
},
{
“值”:“1627.01”
},
{
“值”:“1103.52”
},
{
“值”:“1718.69”
},
{
“价值”:“1992.83”
},
{
“值”:“3796.26”
},
{
“值”:“3800.43”
},
{
“值”:“2128.62”
},
{
“值”:“2661.56”
}
];
const result=Array.from({length:input.length-4},(u,i)=>Number((input.slice(i,i+5).reduce((acc,{value})=>acc++value.replace(',',''),0)/5.toFixed(3));

console.log(结果)这不是一个JSON字符串,因为它不是一个字符串。这是一个包含JS对象的普通JS数组。
获取每5个元素的求和平均值,并作为新数组返回。
这不清楚。是否要获取求和、平均值或新数组?请发布所需的输出变量名称
jString
ing。内容既不是字符串,也不是“JSON”或“JSON字符串”@CertainPerformance部分是我的错。我编辑它是为了删除那里的“JSON字符串”。实际上我不确定它应该是什么-数组、值、对象。代码似乎试图返回数组,但……它可能只是一个错误的实现。字符串类似于
“2128.62”
永远不能被“强制”为数字,因为
“消息”:“SyntaxError:unexpected token:”,
-你的reduce有一个额外的
为什么不像问题中那样除以5?问题不是很清楚。标题是“对象数组每5个值求和”,但代码表明OP想要平均值。如果OP想要的话,从
reduce
输出中获得平均值是很容易的。是的,当然……只是他的代码有
sum=(a+b+c+d+e)/5
-这不是变量的好名字:p
for(var i = 0; i <arr.length -1; i++){
                    sum += item.value[i];
                  }
if i == 5 then
sum = sum/5;
end if
if i % 5 == 0 then
sum = sum/5;
end if