繁体   English   中英

array.push()不是我打算做的

[英]array.push() does not what I intend to do

我陷入了一个真正的愚蠢问题。 我试图使用D3.js动态绘制数据(一些人)。

  1. 每当发生更改时,我都会从firebase数据库获取记录数据。 在这里,我用一个包含一些静态分数数据的对象来模拟它
  2. 我在记录中添加时间键/值对
  3. 然后我想通过创建一个称为data的数组为D3准备数据,在该数组上每秒添加一条记录。 我使用数组push方法并通过data.push(record)传递记录
  4. 我将记录对象放到控制台上,可以很好地完成预期的工作。 5.tit,但是time控制台的值用for循环记录,显示所有元素,也包括过去的元素,当前时间值(大于0、1、2、3、4 .....)

我信不信由你三个小时。

如果有人可以帮助我。 谢谢

 var data = [];
  record = {Fanny : 40, Joe : 20};
  var time = 0;

  record["time"] = time;

  console.log(record);


  myTimer = setInterval(function () {


    time = time + 1;

    record.time = time; 

    console.log(record);

    data.push(record);


    for (i = 0; i < data.length; i++) { 
          console.log(data[i].time)

    }
  },1000);

您需要为每次迭代创建新record

现在,你有一样的单(在阵列可多次重复) record ,并不断更新它。

data.push({ Fanny: 40, Joe: 20, time: time });

您可能正在处理参考问题,这意味着

一个是对象

a.name = 'toto';
var b = a;
b.name = 'titi';

console.log(a.name) // will output 'titi'

解决该问题的一种方法是做不那么漂亮

var b = JSON.parse(JSON.stringify(a));

破坏引用

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM