如何在单个数组中的每个项目中添加Angular forEach

时间:2016-01-18 07:35:31

标签: arrays angularjs

我想清楚地解释一下我的问题。

$http.get('arealist.json').success(function(response){
      angular.forEach(response, function(data){
           $scope.arealist = data.area_name;
           console.log($scope.arealist);
      });
});

使用上面的代码从arealist.json获取area_name。 它在控制台中看起来像下面的图像。 console.log image

但我需要在数组中存储上面的数据,它看起来像下面

$scope.arealist = [ 
                    "Avadi", 
                    "Poonamallee",
                    "Padi", 
                    "Ambattur Industrial Estat",
                    "Annanagar",
                    "Arumbakkam",
                    "Kodambakkam",
                    "Nandanam"
                  ]

我该怎么做?

4 个答案:

答案 0 :(得分:3)

声明如下变量。

var arealistArray=[];
$scope.arealist=[]; 

然后将值推入数组。

angular.forEach(response, function(data){
       arealistArray.push(data.area_name);
  });

最后将数组分配给范围变量。

$scope.arealist=arealistArray;

答案 1 :(得分:1)

使用数组:

$scope.arealist = [];
$http.get('arealist.json').success(function(response){
      angular.forEach(response, function(data){
           $scope.arealist.push(data.area_name);
           console.log($scope.arealist);
      });
});

答案 2 :(得分:1)

看起来您正在控制器中执行此请求(因为$scope可用)?首先,你应该在服务中做这样的请求。例如:

angular
    .module(/*module name*/)
    .service('AreaService', function ($http) {

        // Map the array of area objects to an array
        // of each area object's `area_name` property
        this.getAreas = function () {
            return $http
                .get('arealist.json')
                .then(function (response) {
                    return response.data.map(function (data) {
                        return data.area_name;
                    });
                });
        };
    })

然后在控制器中使用该服务:

    .controller(/*controller name*/, function (AreaService) {
        AreaService.getAreas().then(function (areas) {
            $scope.arealist = areas;
        }); 
    });

答案 3 :(得分:0)

您可以使用Array.prototype.map()来实现此目的。

userData

Browser support for map.

如果您使用的是underscore.jslodash等库,请使用_.map()获得相同的结果。

$scope.arealist = [];

$http.get('arealist.json').success(function (response) {
    $scope.arealist = response.map(function (data) {
        return data.area_name;
    });
});