簡體   English   中英

Javascript:將一個數組分配給另一個數組,這是對象的屬性

[英]Javascript : Assigning one array to another array which is a property of an object

所以我有這個數組

var collectData = ["one", "two"];

和一個對象

var datasets = {
   labels : ["something", "something"]
}

在我的程序中,當啟動應用程序時,collectData是動態生成的並分配了值,我想將這些值分配給對象內部的labels數組。 我嘗試了以下方法

labels : [].concat(collectData)
labels : collectData.slice()

但這沒用。 我究竟做錯了什么?

只需使用您最初擁有的陣列上的concat即可。 當您執行[].concat您只是將collectData元素添加到新的數組文字中,因此最終只能得到collectData

var collectData = ["one", "two"];
var datasets = {
   labels : ["something", "something"].concat(collectData)
}

另外,您始終可以在聲明對象datasets之后的某個時候執行datasets.labels.concat(collectData)

要修改屬性,請使用分配:

datasets.labels = collectData;

如果要復制collectData數組而不是直接分配,請使用:

datasets.labels = collectData.slice();

我不完全了解您要做什么,但是我有兩個選擇供您選擇:

  1. 將數組添加到標簽數組:

  var collectData = ["one", "two"]; var datasets = { labels : [] } datasets.labels.push(collectData); console.log(datasets.label); 

結果:

{
    labels: [["one","two"]]
}
  1. 將collectData值添加到datasets.labels數組(除了Amit Joki的答案以外的其他選項)

  var collectData = ["one", "two"]; var datasets = { labels : [] } for(i=0; i<collectData.length; i++){ datasets.labels.push(collectData[i]); } console.log(datasets.labels) 

結果:

{
   datasets: ["one", "two"]
}

問題是,collectData在全局范圍內初始化,並在回調函數中分配了值。 然后,當我嘗試為標簽數組分配值時,該標簽數組位於對象數據集內部,而數據集本身不在回調函數內部,而是在回調函數外部。 由於某種原因,一旦程序離開回調函數,使其再次完全空白,我將不知道collectData數組中的所有數據都消失了。 這就是為什么標簽仍然作為空數組出現的原因。 我認為我未能正確解釋這個問題。 我感謝大家抽出寶貴時間來回答。 如果有人可以向我解釋重置數組的回調函數怪癖,那就太好了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM