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

时间:2014-11-01 18:47:17

标签: javascript arrays object

我正在玩chart.js(http://www.chartjs.org)。目前我有一个基于以下对象的折线图。在下面的示例中,X轴数据从存储为“x”的数组中填充。我有两个数据集,它们是我的图表上显示的两行。 Y轴数据在下面的示例中存储为“y”和“z”。

我正在尝试添加一些功能,用户只能根据需要显示特定行或两者。

换句话说,在数据集属性中添加或删除对象实例。

我对以下结构的理解:整个事物是一个名为data的对象;这有两个属性叫做标签和数据集。 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]

这不起作用。对于为什么不提出任何建议?

1 个答案:

答案 0 :(得分:0)

您应该知道非原始类型,例如对象数组他们的参考让&#39操纵; s用一个简单的例子来证明这一点:

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]