我有一个包含大量数据的大型“主对象”(objMaster)。
我有3个类别的3个单独的JSON对象(我知道,不是“技术上”的对象),它们将保存从objMaster中的值计算出的一些数据。我们称它们为: objCategory1,objCategory2,objCategory3
我正在尝试将数据推入指定索引处的这些分类对象中。问题是,如果我将单独的数据推送到每个分类的对象,它将把所有数据推送到每个对象。
$(objMaster).each(function(j,v){
var myCat1data = objMaster[j].Cat1Completed / objMaster[j].Cat1Total ;
var myCat2data = objMaster[j].Cat2Completed / objMaster[j].Cat2Total ;
var myCat3data = objMaster[j].Cat3Completed / objMaster[j].Cat3Total ;
objCategory1[j].data.push(myCat1data);
objCategory2[j].data.push(myCat2data);
objCategory3[j].data.push(myCat3data);
});
导致objCategory1 [j] .data获得myCat1data,myCat2data和myCat3data的值,而不仅仅是myCat1data的值。 objCategory2 [j] .data和objCategory3 [j] .data一样。
如果我注释掉对objCategory2和objCategory3的推送,则objCategory1 [j] .data仅获得myCat1data值。
$(objMaster).each(function(j,v){
var myCat1data = objMaster[j].Cat1Completed / objMaster[j].Cat1Total ;
var myCat2data = objMaster[j].Cat2Completed / objMaster[j].Cat2Total ;
var myCat3data = objMaster[j].Cat3Completed / objMaster[j].Cat3Total ;
objCategory1[j].data.push(myCat1data);
// objCategory2[j].data.push(myCat2data);
// objCategory3[j].data.push(myCat3data);
});
有什么想法吗?
更新: 我正在使用类似的迭代来初始化类别数组
var objCategory1= [];
var objCategory2= [];
var objCategory3= [];
// create category dataset shells
$(objMaster).each(function(j,v){
var myDataSet = {
label: mycategory,
data: []
};
// push dataset shell to associated chart data objects
objCategory1.push(myDataSet);
objCategory2.push(myDataSet);
objCategory3.push(myDataSet);
});
答案 0 :(得分:1)
而不是像这样初始化
var objCategory1= [];
var objCategory2= [];
var objCategory3= [];
// create category dataset shells
$(objMaster).each(function(j,v){
var myDataSet = {
label: mycategory,
data: []
};
// push dataset shell to associated chart data objects
objCategory1.push(myDataSet);
objCategory2.push(myDataSet);
objCategory3.push(myDataSet);
});
您可以尝试一下
var objCategory1= [];
var objCategory2= [];
var objCategory3= [];
// create category dataset shells
$(objMaster).each(function(j,v){
objCategory1.push({ label: mycategoy, data: [] });
objCategory2.push({ label: mycategoy, data: [] });
objCategory3.push({ label: mycategoy, data: [] });
});
这将使具有不同数据数组的objCategoryies变得庞大
答案 1 :(得分:0)
您要将对同一对象的引用推入所有3个'objCategoryX'数组中:
var myDataSet = {
label: mycategory,
data: []
};
objCategory1.push(myDataSet);
objCategory2.push(myDataSet);
objCategory3.push(myDataSet);
相反,您需要为每次使用创建新对象:
objCategory1.push({
label: mycategory,
data: []
});
objCategory2.push({
label: mycategory,
data: []
});
objCategory3.push({
label: mycategory,
data: []
});