【问题标题】:how to push data into an array with key and value?如何将数据推送到具有键和值的数组中?
【发布时间】:2018-10-18 02:39:40
【问题描述】:

我有这个带有数组的对象

$scope.filters = {     
      Sites: [], 
      Regions: [], 
      Devices : [], 
      Variables : [],      
     };

我想推入变量 {'VariableName': 'Total Active Energy'};

我这样做了

     var obj = {};
      obj['VariableName'] = response.data[0].AutoReportVariable;
      $scope.filters.Variables.push(obj);        
      console.log($scope.filters.Variables);

但在控制台中我采取:

0:{VariableName:'总有功电能'}
如何在没有键 0 的情况下仅将值推送到控制台 {VariableName:'Total Active Energy'} ?

我想要这个

$scope.filters = {     
  Sites: [], 
  Regions: [], 
  Devices : [], 
  Variables : [{VariableName:'Total Active Energy'}]      
 };

【问题讨论】:

  • 0 不是键,它是数组的索引
  • 你有你想要的格式! console.log 也会显示索引。你有什么问题??也许是一个物体??
  • console.log($scope.filters.Variables.VariableName);未定义。
  • 我不得不说 console.log($scope.filters.Variables[0].VariableName);是否可以推送此值和 console.log($scope.filters.Variables.VariableName);不是未定义吗?

标签: javascript arrays angularjs object


【解决方案1】:

你需要将对象推送到数组中

angular.module('myApp', []).controller('namesCtrl', function($scope) {
  $scope.filters = {     
    Sites: [], 
    Regions: [], 
    Devices : [], 
    Variables : []      
   };
   for(var i=0;i<10;i++){
   
   var obj={VariableName:'Total Active Energy'+i};
   $scope.filters.Variables.push(obj);
   }
   angular.forEach($scope.filters.Variables, function(value, key) {
   console.log("item " + JSON.stringify(value) + " is in index " + key)
   });
   
   
});
<!DOCTYPE html>
<html>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script>
<body>

<div ng-app="myApp" ng-controller="namesCtrl">
  <ul>
      <li ng-repeat="x in filters.Variables">
        VariableName: {{x.VariableName}}
      </li>
  </ul>

</div>

</body>
</html>

【讨论】:

    【解决方案2】:

    不是这样的,

    $scope.filters = {     
        Sites: [], 
        Regions: [], 
        Devices : [], 
        Variables : [],      
    };
    $scope.filters.Variables.push({
        VariableName: 'Total Active Energy'
    });
    console.log($scope.filters.Variables);
    

    【讨论】:

      【解决方案3】:

      简单看一下这段代码

      var $scope = {};
      
      $scope.filters = {     
        Sites: [], 
        Regions: [], 
        Devices : [], 
        Variables : [{VariableName:'Total Active Energy'}]      
       };
       
       console.log("showing total araay:");
       console.log($scope.filters.Variables);
       
       console.log("showing item by item");
       $scope.filters.Variables.forEach(function(itm, index) {
        console.log("item " + JSON.stringify(itm) + " is in index " + index)
       });

      【讨论】:

      • 不是angular js的解决方案
      • 这个问题和angularJs有关吗?这是关于 javascript 中的数组和对象的东西! @ProjeshPal
      • 1- 通常我们不会在普通 JS 中使用 $scope.variable 格式,除非有人不知道 AngularJs 2. 帖子标记为 angularJs
      • 所以你添加了ng-repeat,因为angularJs。正确的? @ProjeshPal
      • 没有。 ng-repeat 是为了证明推送对象作用域后的数据在视图中正常工作。即使在 JS 中,您也没有回答如何推送对象。您只需为每个运行一个并记录静态对象
      猜你喜欢
      • 2011-01-08
      • 1970-01-01
      • 2011-06-17
      • 2013-11-09
      • 2020-05-11
      • 2017-09-25
      • 2017-07-06
      • 2020-05-20
      相关资源
      最近更新 更多