簡體   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