Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将值指定给具有动态指定关键帧的另一个对象内的对象_Javascript_Object_Javascript Objects_Assign - Fatal编程技术网

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的初步评论给你。阅读链接。非常感谢!对象分配是问题所在。非常感谢!对象分配是个问题。