我正在尝试从我的角度应用程序中的其余服务创建这样的数据集模式。
示例:
$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}];
答案 0 :(得分:3)
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])};
答案 1 :(得分:2)
您正在将_fieldData.push(elm[widget.dataname])
分配给data
并且.push()
方法返回新的数组长度,因此您需要先推送该元素,然后再分配该数组本身。
_fieldData.push(elm[widget.dataname])
return { name: elm[widget.seriesname], data:_fieldData};
});
答案 2 :(得分:2)
试试这个,你需要一个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
});
答案 3 :(得分:0)
数组.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 }
});