【问题标题】:object.push(array) is not workingobject.push(array) 不工作
【发布时间】:2017-05-08 11:29:08
【问题描述】:

我正在使用 for 循环来单独获取单元,而在循环内部,我正在获取如下所示的卷数组。现在我想将该数组推送到相应的单元,所以我使用了 push 但在这里我得到了错误。

我的代码在下面

$scope.UnitDetails = [{
                       UnitId : "001"
                       Unit1 : "A"
                       Fields: [{"one" : "true","Isactive" : true },
                                 {"two" : "false","Isactive" : true }
                               ]
                      },
                       {
                       UnitId : "002"
                       Unit1 : "B"
                       Fields: [{"one" : "true","Isactive" : true },
                                 {"two" : "false","Isactive" : true }
                               ]
                      }]
     for(i= 0; i < $scope.UnitDetails.length ; i++){     
                var volume = [];                
                volume.Volume_AL = eval($scope.VolumeFormula.AL);
                volume.Volume_BL = eval($scope.VolumeFormula.BL);
                volume.Volume_CL = eval($scope.VolumeFormula.CL);
                volume.Volume_DL = eval($scope.VolumeFormula.DL);
                $scope.UnitDetails[i].push(volume);
            }

谁能找到我做错的地方

编辑

当我尝试如下时,它会在对象中创建另一个数组,如下所示

 for(i= 0; i < $scope.UnitDetails.length ; i++){     
                    var volume = {};                
                    volume.Volume_AL = eval($scope.VolumeFormula.AL);
                    volume.Volume_BL = eval($scope.VolumeFormula.BL);
                    volume.Volume_CL = eval($scope.VolumeFormula.CL);
                    volume.Volume_DL = eval($scope.VolumeFormula.DL);
                    $scope.UnitDetails.push(volume);
                }

我得到了什么

   $scope.UnitDetails = [{
                           UnitId : "001"
                           Unit1 : "A"
                           Fields: [{"one" : "true","Isactive" : true },
                                     {"two" : "false","Isactive" : true }
                                   ]
                          },
                           {
                           UnitId : "002"
                           Unit1 : "B"
                           Fields: [{"one" : "true","Isactive" : true },
                                     {"two" : "false","Isactive" : true }
                                   ]
                          },
                           { 
                             Volume_CL:0,
                             Volume_EQ:12,
                             Volume_PH:54,
                             Volume_RW: 24
                        }]

我的预期:

  $scope.UnitDetails = [{
                           UnitId : "001"
                           Unit1 : "A"
                           Fields: [{"one" : "true","Isactive" : true },
                                     {"two" : "false","Isactive" : true }
                                   ]
                           volume : [ { 
                             Volume_CL:0,
                             Volume_EQ:12,
                             Volume_PH:54,
                             Volume_RW: 24
                                      }]
                          },
                          {
                           UnitId : "002"
                           Unit1 : "B"
                           Fields: [{"one" : "true","Isactive" : true },
                                     {"two" : "false","Isactive" : true }
                                   ]
                          volume : [ { 
                            Volume_CL:0,
                             Volume_EQ:12,
                             Volume_PH:54,
                             Volume_RW: 24
                                     }]
                          },
                        ]

【问题讨论】:

  • 你的意思是$scope.UnitDetails[i] = volume...?
  • $scope.UnitDetails 是什么?
  • 你是不是说var volume = {};?还显示您遇到的错误可能很有用。在公共论坛上问我为什么会收到错误但实际上并没有显示我遇到的错误,这对我来说似乎很奇怪。
  • 你遇到了什么错误。
  • 很酷,但是这个$scope.UnitDetails 变量是什么?它在哪里声明?它是如何声明的?我希望你意识到,从一个没有魔法水晶球的人的角度来看,能够读取别人的思想/代码是很难提供帮助的。

标签: javascript angularjs arrays for-loop


【解决方案1】:

要达到预期的结果,您可以将volume 数组动态附加到$scope.UnitDetails 的每个元素:

for (var i = 0; i < $scope.UnitDetails.length; i++) {
    $scope.UnitDetails[i].volume = [{
        Volume_AL: eval($scope.VolumeFormula.AL),
        Volume_BL: eval($scope.VolumeFormula.BL),
        Volume_CL: eval($scope.VolumeFormula.CL),
        Volume_DL: eval($scope.VolumeFormula.DL)
    }];
}

备注:eval 语句允许执行任意 javascript 代码,如果输入来自您的用户,您可能需要确保它不包含任何恶意代码,然后再将其传递给此函数。甚至最好不要使用eval。根据您的要求,您可能会找到更合适和限制性更强的功能来实现您的目标。例如,如果您希望只计算客户编写的数学表达式,您可能会发现一个专门为此目的设计的库,而不是使用通用的 eval 语句。

【讨论】:

  • 如何给出单行 if 条件来检查该 eval 中的 null。就像 eval statement 返回 NAN 或 undefined 然后存储为 0
猜你喜欢
  • 2018-03-03
  • 2013-11-19
  • 1970-01-01
  • 2018-03-10
  • 2023-03-06
  • 2012-09-29
  • 2011-09-22
  • 1970-01-01
相关资源
最近更新 更多