我有一个包含大量数据的大型“主对象”(objMaster)。
我有3个独立的JSON对象(我知道,从技术上讲不是“技术上”的对象),这3个类别将保存一些从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);
}); 这会导致objCategory1j.data获得myCat1data、myCat2data和myCat3data的值,而不仅仅是myCat1data的值。objCategory2j.data和objCategory3j.data也是如此。
如果我注释掉对objCategory2 & objCategory3的推送,那么objCategory1j.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);
}); 发布于 2019-04-10 22:36:47
而不是像这样初始化
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
发布于 2019-04-10 22:35:56
您正在将对同一对象的引用推送到所有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: []
});https://stackoverflow.com/questions/55614791
复制相似问题