将错误的值推入Javascript数组

将错误的值推入Javascript数组,javascript,jquery,Javascript,Jquery,我有一个包含4个对象的JSON字符串,每个对象都包含一个数组tennisballs,其中this.tennisballs.length大约是2000。在我的代码中,我认为应该得到所有田纳西球重量的4个平均值的数组,但显然我得到了长度为2000的数组。为什么呢 $.each(data, function () { var average = Array(); var sum = 0; for (var i = 0; i < this.tennisballs.lengt

我有一个包含4个对象的JSON字符串,每个对象都包含一个数组
tennisballs
,其中
this.tennisballs.length
大约是
2000
。在我的代码中,我认为应该得到所有田纳西球重量的4个平均值的数组,但显然我得到了长度为2000的数组。为什么呢

$.each(data, function () {
    var average = Array();
    var sum = 0;
    for (var i = 0; i < this.tennisballs.length; ++i) {
        sum += parseFloat(this.tennisballs[i][2]);
        if (i == (this.tennisballs.length - 1)) {
            average[i] = sum / this.tennisballs.length;
            average.push(average[i]);
            console.log("sum: " + sum + ", average[" + i + "]" + average[i]);
        }
    }
    console.log("average array:" + average);
});
$。每个(数据、函数(){
var average=Array();
var总和=0;
对于(变量i=0;i
您正在将一个项目存储在
平均值
数组的第2000个位置,因此它的长度始终为2000

例如:


数组
平均值
中的剩余项将是
未定义的
,但最后一项除外

您正在将一项存储在
平均值
数组的第2000位,因此其长度将始终为2000

例如:


数组
平均值
中的剩余项将是
未定义的
,但最后一项除外

您正在将一项存储在
平均值
数组的第2000位,因此其长度将始终为2000

例如:


数组
平均值
中的剩余项将是
未定义的
,但最后一项除外

您正在将一项存储在
平均值
数组的第2000位,因此其长度将始终为2000

例如:


数组中的剩余项
平均值
将是
未定义的
,但最后一项除外

当您在数组的特定索引处分配一个项,并且该索引超出数组长度时,长度将在该索引之后调整

当您将平均值指定给
average[i]
i
约为2000时,它将使数组的长度约为2000,尽管数组中的大多数项未定义

要将平均值放在数组的最后一位,不要将其分配到索引
i
,只需按一下即可。使用
average.length-1
获取数组中最后一项的索引。此外,还应在循环外部创建数组,并在循环后显示:

var average = Array();
$.each(data, function() {
  var sum = 0;
  for(var i = 0; i < this.tennisballs.length; ++i){
    sum += parseFloat(this.tennisballs[i][2]);
    if(i == (this.tennisballs.length - 1) ) {
      average.push(sum / this.tennisballs.length);
      console.log("sum: " + sum + ", average["+(average.length-1)+"]: " + average[average.length-1]); 
    }
  }
});
console.log("average array:" + average);
var average = Array();
$.each(data, function() {
  var sum = 0;
  for(var i = 0; i < this.tennisballs.length; ++i){
    sum += parseFloat(this.tennisballs[i][2]);
  }
  average.push(sum / this.tennisballs.length);
  console.log("sum: " + sum + ", average["+(average.length-1)+"]: " + average[average.length-1]); 
});
console.log("average array:" + average);
var average=Array();
$.each(数据,函数(){
var总和=0;
对于(变量i=0;i

旁注:您只需在循环后推送Average,而无需检查循环中每个迭代的索引:

var average = Array();
$.each(data, function() {
  var sum = 0;
  for(var i = 0; i < this.tennisballs.length; ++i){
    sum += parseFloat(this.tennisballs[i][2]);
    if(i == (this.tennisballs.length - 1) ) {
      average.push(sum / this.tennisballs.length);
      console.log("sum: " + sum + ", average["+(average.length-1)+"]: " + average[average.length-1]); 
    }
  }
});
console.log("average array:" + average);
var average = Array();
$.each(data, function() {
  var sum = 0;
  for(var i = 0; i < this.tennisballs.length; ++i){
    sum += parseFloat(this.tennisballs[i][2]);
  }
  average.push(sum / this.tennisballs.length);
  console.log("sum: " + sum + ", average["+(average.length-1)+"]: " + average[average.length-1]); 
});
console.log("average array:" + average);
var average=Array();
$.each(数据,函数(){
var总和=0;
对于(变量i=0;i
当您在数组的特定索引处分配一个项,并且该索引超出数组的长度时,长度将在该索引之后调整

当您将平均值指定给
average[i]
i
约为2000时,它将使数组的长度约为2000,尽管数组中的大多数项未定义

要将平均值放在数组的最后一位,不要将其分配到索引
i
,只需按一下即可。使用
average.length-1
获取数组中最后一项的索引。此外,还应在循环外部创建数组,并在循环后显示:

var average = Array();
$.each(data, function() {
  var sum = 0;
  for(var i = 0; i < this.tennisballs.length; ++i){
    sum += parseFloat(this.tennisballs[i][2]);
    if(i == (this.tennisballs.length - 1) ) {
      average.push(sum / this.tennisballs.length);
      console.log("sum: " + sum + ", average["+(average.length-1)+"]: " + average[average.length-1]); 
    }
  }
});
console.log("average array:" + average);
var average = Array();
$.each(data, function() {
  var sum = 0;
  for(var i = 0; i < this.tennisballs.length; ++i){
    sum += parseFloat(this.tennisballs[i][2]);
  }
  average.push(sum / this.tennisballs.length);
  console.log("sum: " + sum + ", average["+(average.length-1)+"]: " + average[average.length-1]); 
});
console.log("average array:" + average);
var average=Array();
$.each(数据,函数(){
var总和=0;
对于(变量i=0;i

旁注:您只需在循环后推送Average,而无需检查循环中每个迭代的索引:

var average = Array();
$.each(data, function() {
  var sum = 0;
  for(var i = 0; i < this.tennisballs.length; ++i){
    sum += parseFloat(this.tennisballs[i][2]);
    if(i == (this.tennisballs.length - 1) ) {
      average.push(sum / this.tennisballs.length);
      console.log("sum: " + sum + ", average["+(average.length-1)+"]: " + average[average.length-1]); 
    }
  }
});
console.log("average array:" + average);
var average = Array();
$.each(data, function() {
  var sum = 0;
  for(var i = 0; i < this.tennisballs.length; ++i){
    sum += parseFloat(this.tennisballs[i][2]);
  }
  average.push(sum / this.tennisballs.length);
  console.log("sum: " + sum + ", average["+(average.length-1)+"]: " + average[average.length-1]); 
});
console.log("average array:" + average);
var average=Array();
$.each(数据,函数(){
var总和=0;
对于(变量i=0;i
当您在数组的特定索引处分配一个项,并且该索引超出数组的长度时,长度将在该索引之后调整

当您将平均值指定给
average[i]
i
约为2000时,它将使数组的长度约为2000,尽管数组中的大多数项未定义

要将平均值放在数组的最后一位,不要将其分配到索引
i
,只需按一下即可。使用
average.length-1
获取数组中最后一项的索引。此外,还应在循环外部创建数组,并在循环后显示:

var average = Array();
$.each(data, function() {
  var sum = 0;
  for(var i = 0; i < this.tennisballs.length; ++i){
    sum += parseFloat(this.tennisballs[i][2]);
    if(i == (this.tennisballs.length - 1) ) {
      average.push(sum / this.tennisballs.length);
      console.log("sum: " + sum + ", average["+(average.length-1)+"]: " + average[average.length-1]); 
    }
  }
});
console.log("average array:" + average);
var average = Array();
$.each(data, function() {
  var sum = 0;
  for(var i = 0; i < this.tennisballs.length; ++i){
    sum += parseFloat(this.tennisballs[i][2]);
  }
  average.push(sum / this.tennisballs.length);
  console.log("sum: " + sum + ", average["+(average.length-1)+"]: " + average[average.length-1]); 
});
console.log("average array:" + average);
var average=Array();
$.each(数据,函数(){
var总和=0;
对于(变量i=0;i