我正在玩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]
这不起作用。对于为什么不提出任何建议?
答案 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]