Javascript将数组附加到对象数组

时间:2016-01-26 03:17:01

标签: javascript angularjs

我尝试将新值添加到预定义的对象数组中,如下所示:

$scope.chartConfig.series.push(
    [{
        name: "Brands",
        colorByPoint: true,
        data: []
    }]
);

我想向data添加一个新的数组值,但仍然失败。我试过了:

$scope.todayChartConfig.series['data'] = [];
$scope.todayChartConfig.series['data'].push(
    {
        name: "Internet Explorer",
        y: 56.33
    },
    {
        name: "Chrome",
        y: 30.12
    }
);

但是它附加到一个新对象而不是与当前数据数组结合。

我的期望是:

[{
  name: "Brands",
  colorByPoint: true,
  data: [
    {
        name: "Internet Explorer",
        y: 56.33
    },
    {
        name: "Chrome",
        y: 30.12
    }
  ]
}]

我怎样才能做到这一点?

3 个答案:

答案 0 :(得分:2)

第一个问题是todayChartConfig.series是一个数组,因此您应该追加$scope.todayChartConfig.series[0]

第二个问题是你需要单独追加对象。 (不正确。请参阅下面的编辑

所以,这应该有效:

$scope.todayChartConfig.series[0]['data']
   .push({
        name: "Internet Explorer",
        y: 56.33
    }).push({
        name: "Chrome",
        y: 30.12
    });

编辑:您还可以将所有对象追加在一起(请参阅下面的@ slebetman评论)。所以,这也有效

$scope.todayChartConfig.series[0]['data']
.push({
        name: "Internet Explorer",
        y: 56.33
    },
    {
        name: "Chrome",
        y: 30.12
    });

答案 1 :(得分:2)

使用您当前的数据结构应该是:

$scope.todayChartConfig.series[0][0].data.push(
    {
        name: "Internet Explorer",
        y: 56.33
    },
    {
        name: "Chrome",
        y: 30.12
    }
);

哪个应该有效,因为:

$scope.chartConfig.series.push(
    [{
        name: "Brands",
        colorByPoint: true,
        data: []
    }]
);

将一个对象数组推入一个数组。

但是,如果上面的代码是拼写错误,你真正想要的是:

$scope.chartConfig.series.push(
    {
        name: "Brands",
        colorByPoint: true,
        data: []
    }
);

然后它应该是:

$scope.todayChartConfig.series[0].data.push(
    {
        name: "Internet Explorer",
        y: 56.33
    },
    {
        name: "Chrome",
        y: 30.12
    }
);

答案 2 :(得分:1)

您的原始数组是$ scope.chartConig.series,然后您将推送到$ scope.todayChartConfig.series。你的问题是你没有推进正确的阵列。

你需要这样做:

$scope.chartConfig.series['data'] = [];
$scope.chartConfig.series['data'].push(
    {
        name: "Internet Explorer",
        y: 56.33
    },
    {
        name: "Chrome",
        y: 30.12
    }
);

要执行您想要执行的操作,请参阅此jsFiddle