Javascript 将值指定给具有动态指定关键帧的另一个对象内的对象
我有一个对象,其数字月份作为其他对象的键,包含键的年份和初始值的零Javascript 将值指定给具有动态指定关键帧的另一个对象内的对象,javascript,object,javascript-objects,assign,Javascript,Object,Javascript Objects,Assign,我有一个对象,其数字月份作为其他对象的键,包含键的年份和初始值的零 MonthRow : { 1 : {2017:0,2018:0}, 2 : {2017:0,2018:0}, 3 : {2017:0,2018:0}, 4 : {2017:0,2018:0}, 5 : {2017:0,2018:0}, 6 : {2017:0,2018:0} } 在查询之后,我使用以下代码为每个对象设置值 Object.keys(MainData.MonthRow).
MonthRow : {
1 : {2017:0,2018:0},
2 : {2017:0,2018:0},
3 : {2017:0,2018:0},
4 : {2017:0,2018:0},
5 : {2017:0,2018:0},
6 : {2017:0,2018:0}
}
在查询之后,我使用以下代码为每个对象设置值
Object.keys(MainData.MonthRow).forEach(function(key){
MainData.block.forEach(function(element,i,block){
if(key == element.month){
MainData.year.forEach(function(year, j, years){
if(element.year == year && key == element.month){
console.log("This is the Sale: ", element.Sale, "This is the year ", year, key);
console.log(MainData.MonthRow[key], "This is the Month Key");
console.log(MainData.MonthRow[key][year], "This is the year and key");
MainData.MonthRow[key][year]=element.Sale;
console.log(MainData.MonthRow)
}
})
}
});
但是在使用MonthRow[key][year]=element.Sale赋值之后;它将值分配给所有月份
我的准时问题是,在key和year是变量的情况下,如何为obj.key.year=赋值
在JSFiddle中重新创建得到了预期的结果,但是在Sails框架上它不起作用
问题是MonthRow
中的所有子对象都引用同一个对象(MainData.years
),换句话说MainData.years===MonthRow['1']==MonthRow['2']====…
。因此,对其中一个子对象的更改将反映在所有子对象上,也反映在MainData.years
上。下面是问题的演示:
var objA={};
var objB=objA;//objA不会复制到objB,只复制引用
//objA和objB指向/引用同一对象
objB.foo=“bar”//对其中一个的更改。。。
console.log(objA);/。。。反映在另一个上的是MonthRow
中的所有子对象都引用同一个对象(MainData.years
),换句话说MainData.years====MonthRow['1']==MonthRow['2']===…
。因此,对其中一个子对象的更改将反映在所有子对象上,也反映在MainData.years
上。下面是问题的演示:
var objA={};
var objB=objA;//objA不会复制到objB,只复制引用
//objA和objB指向/引用同一对象
objB.foo=“bar”//对其中一个的更改。。。
console.log(objA);/。。。反映在另一个
主数据。MonthRow
和MonthRow
之间的区别是什么?你问题顶部显示的对象是哪一个?请您提供一个例子,说明您正确地使用变量作为对象键object[key][year]
可以工作,但前提是object[key]
已经存在。@Phil MainData.MonthRow和MonthRow是相同的。我尝试使用MainData.MonthRow[key][year]=element.Sale;但是我仍然得到了所有月份的所有数据,并分配了迭代的最后一个值,这是没有意义的。在您的问题中,您有MainData.MonthRow
和MonthRow
。您在哪里分配MonthRow
?您在生成一个最小的、完整的和可验证的示例时遇到困难吗?还有,什么是MainData.block.
。请,请考虑Phil的初步评论给你。阅读链接。MainData.MonthRow
和MonthRow
之间有什么区别?你问题顶部显示的对象是哪一个?请您提供一个例子,说明您正确地使用变量作为对象键object[key][year]
可以工作,但前提是object[key]
已经存在。@Phil MainData.MonthRow和MonthRow是相同的。我尝试使用MainData.MonthRow[key][year]=element.Sale;但是我仍然得到了所有月份的所有数据,并分配了迭代的最后一个值,这是没有意义的。在您的问题中,您有MainData.MonthRow
和MonthRow
。您在哪里分配MonthRow
?您在生成一个最小的、完整的和可验证的示例时遇到困难吗?还有,什么是MainData.block.
。请,请考虑Phil的初步评论给你。阅读链接。非常感谢!对象分配是问题所在。非常感谢!对象分配是个问题。