繁体   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