Javascript 对象和数组:参照第二个对象更改对象属性(chart.js示例)

Javascript 对象和数组:参照第二个对象更改对象属性(chart.js示例),javascript,arrays,object,Javascript,Arrays,Object,我正在玩chart.js。目前,我有一个基于以下对象的线图。X轴数据是从以下示例中存储为“X”的数组填充的。我有两个数据集,它们是我的图表上显示的两条线。在下面的示例中,Y轴数据存储为“Y”和“z” 我试图添加一些功能,用户可以只显示一行或两行,如果他们愿意的话 换句话说,在dataset属性中添加或删除对象实例 我对以下结构的理解:整个事物是一个名为数据的对象;这有两个属性,称为标签和数据集。datasets属性是对象实例的数组。这是一种有效的思考方式吗 var data = { l

我正在玩chart.js。目前,我有一个基于以下对象的线图。X轴数据是从以下示例中存储为“X”的数组填充的。我有两个数据集,它们是我的图表上显示的两条线。在下面的示例中,Y轴数据存储为“Y”和“z”

我试图添加一些功能,用户可以只显示一行或两行,如果他们愿意的话

换句话说,在dataset属性中添加或删除对象实例

我对以下结构的理解:整个事物是一个名为数据的对象;这有两个属性,称为标签和数据集。datasets属性是对象实例的数组。这是一种有效的思考方式吗

var data = {

    labels : x,
    datasets : [
        {
            fillColor : "rgba(222,223,179,0)",
            strokeColor : "rgba(222,223,179,1)",
            pointColor : "rgba(222,223,179,1)",
            pointStrokeColor : "#fff",
            data : y
        },

        {

            fillColor : "rgba(194,95,207,0)",
            strokeColor : "rgba(194,95,207,1)",
            pointColor : "rgba(194,95,207,1)",
            pointStrokeColor : "#fff",
            data : z
        },

    ]
}
我试图通过创建一个dataSetReference对象来解决我的问题,如下所示:

  dataSetReference = [
    {
        fillColor : "rgba(222,223,179,0)",
        strokeColor : "rgba(222,223,179,1)",
        pointColor : "rgba(222,223,179,1)",
        pointStrokeColor : "#fff",
        data : y
    },

    {

        fillColor : "rgba(194,95,207,0)",
        strokeColor : "rgba(194,95,207,1)",
        pointColor : "rgba(194,95,207,1)",
        pointStrokeColor : "#fff",
        data : z
    },

]
然后在原始数据对象中引用它,如

   datasets: dataSetReference[0,1]
或者只是:

   datasets: dataSetReference[0]
这不管用。有什么建议吗?

< P>你应该知道,非原始类型的对象和数组是通过引用来操纵的。举一个简单的例子来证明这一点:

var a = [1,2,3];
var b = a; // now b point to the same reference as the a does,meaning any modification to b will be applied to a also

// for example 
b.push(4);
console.log(a); // you will get  [1, 2, 3, 4] instead of [1, 2, 3] that we are expecting 

//so you can use  only :
datasets: dataSetReference


//and if you want to access separate items from dataSetReference you can use .slice() method 

   var tmpvar = dataSetReference.slice(0,3,4) // now tmpvar = dataSetReference[0,3,4]

谢谢关于如何在某处保存完整的数组元素选择,然后引用“我的数据集”属性中的特定项,有什么建议吗?在我的实际项目中,有8个数据集,所以我不想为所有不同的组合列出单独的对象。你不想在dataSetReference变量中存储8个数据集一组对象,就是这样吗?我想如果需要时我只能引用其中的一个或两个,这将是一个不错的方法;你上面的例子表明这是不可能的。现在看起来我需要一个由八个对象组成的数组,一个由两个对象组成的数组,一个由三个对象组成的数组等等,当只需要一条线时,需要单独的对象。大量代码行。是否要从dataSetReference访问单独的项?使用dataSetReference[0,3,4]将只返回dataSetReference[4],如果要使用dataSetReference[0],dataSetReference[3]和dataSetReference[4]您只需创建一个临时变量,即tmpvar=dataSetReference.slice0,3,4,它将只返回dataSetReference[0、3和4]