【问题标题】:Create an array inside for loop javascript在for循环javascript中创建一个数组
【发布时间】:2015-03-16 05:32:21
【问题描述】:

我正在尝试从我的 Angular 应用程序中的其余服务创建这样的数据集模式。

示例:

$scope.chartSeries = [
  {"name": "Google", "data": [100, 200, 400, 700, 300]},
  {"name": "Yahoo", "data": [300, 100, null, 500, 200]},
  {"name": "Facebook", "data": [500, 200, 200, 300, 500] },
  {"name": "Microsoft", "data": [100, 100, 200, 300, 200] }
];

现在这是我构建类似模式的代码,

 if (datai){ 
    $rootScope.DashboardData =[];
    $rootScope.DashboardData = datai;
    var _fieldData = [];
    widget.chartConfig.series  = [];
    widget.chartConfig.series  = 
    $rootScope.DashboardData.map(function(elm) {
        return { 
            name: elm[widget.seriesname], 
            data:_fieldData.push(elm[widget.dataname])
        };
    });
 }

问题是数据字段没有创建数组。这是上面代码生成的最终输出。

 [{"name": "Google", "data": 1}];

【问题讨论】:

  • 您没有为数据分配任何内容。是错字吗?
  • 你能解释更多关于你的问题的细节吗?你的 for 循环在哪里?
  • @levi 没有正确对齐,现在你可以看到
  • 应该像$rootScope.DashboardData.map(function(elm) { _fieldData.push(elm[widget.dataname]) return { name: elm[widget.seriesname], data: _fieldData }; }); }
  • 对不起伙计们,我是用 c# 方式做的。现在明白了!谢谢@pankajparkar

标签: javascript arrays angularjs html


【解决方案1】:

push() 返回新数组的长度

$rootScope.DashboardData.map(function(elm) 
{
    var _fieldData = [];
    _fieldData.push(elm[widget.dataname]);
    return { name: elm[widget.seriesname], data: _fieldData };
});

或者你可以使用 concat()

return { name: elm[widget.seriesname], data: _fieldData.concat(elm[widget.dataname])};                                          

【讨论】:

    【解决方案2】:

    您将_fieldData.push(elm[widget.dataname]) 分配给data 并且.push() 方法返回新的数组长度,因此您需要先推送元素,然后再分配数组本身。

    _fieldData.push(elm[widget.dataname])
     return { name: elm[widget.seriesname], data:_fieldData};
          });
    

    【讨论】:

      【解决方案3】:

      试试这个,你需要dataname的循环

      $rootScope.DashboardData.map(function(elm) 
      {
         var _fieldData = [];
         for(var i=0;i<elm[widget.dataname.length;i++)
          {
            _fieldData.push(elm[widget.dataname][i]);
          }    
          return { name: elm[widget.seriesname], data: _fieldData
      });
      

      【讨论】:

        【解决方案4】:

        数组.push() 总是返回一个new length of an array

        您应该将该变量推送到_fieldData.push(elm[widget.dataname]);,然后在数据后期分配该变量。

        $rootScope.DashboardData.map(function(elm) 
        {
            var _fieldData = [].push(elm[widget.dataname]);
            return { name: elm[widget.seriesname], data: _fieldData }
        });
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-09-11
          • 2021-09-11
          • 2019-08-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-09-21
          • 1970-01-01
          相关资源
          最近更新 更多