Join the Stack Overflow Community
Stack Overflow is a community of 6.6 million programmers, just like you, helping each other.
Join them; it only takes a minute:
Sign up

This is our data:

$scope.arr = {
     "1": "A",
     "2": "B",
     "3": "C",
     "4": "D",
     "5": "E",
     "6": "F",
     "7": "Others",
     "fromDate": {
      "$date": "2015-02-13T20:59:28.947Z"
     }
}

how to convert this data to a list/array format?

I am expecting something like this: (BTW, I want to remove the fromDate also)

$scope.formattedArr = [
    {value: "1",name: "A" },
    {value: "2",name: "B" },
    {value: "3",name: "C" },
    {value: "4",name: "D" },
    {value: "5",name: "E" },
    {value: "6",name: "F" },
    {value: "7",name: "Others" }
]
share|improve this question
up vote 1 down vote accepted

angular.module('app',[])
.controller('ctrl',function($scope){
$scope.arr = {
     "1": "A",
     "2": "B",
     "3": "C",
     "4": "D",
     "5": "E",
     "6": "F",
     "7": "Others",
     "fromDate": {
      "$date": "2015-02-13T20:59:28.947Z"
     }
}
 $scope.aarr = [];
  for (key in $scope.arr){
     $scope.aarr.push({'value' : key , 'name' : $scope.arr[key] })
  }
  
  
  console.log($scope.aarr)
})

 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.14/angular.min.js"></script>

<div ng-app="app" ng-controller="ctrl">{{aarr}}</div>
  

share|improve this answer

You can use the map() function, see the following snippet

var $scope = {};
$scope.arr = {
  "1": "A",
  "2": "B",
  "3": "C",
  "4": "D",
  "5": "E",
  "6": "F",
  "7": "Others",
  "fromDate": {
    "$date": "2015-02-13T20:59:28.947Z"
  }
}

$scope.list = Object.keys($scope.arr).map(function(el, index) {
  if (el != "fromDate")
    return { value: index + 1, name : $scope.arr[el] };
});

console.log($scope.list);

share|improve this answer

You can use for in loop to reach object key's and value's

for (var key in $scope.arr) {
    if ($scope.arr.hasOwnProperty(key) && typeof $scope.arr[key] === 'string') {
        $scope.formattedArr.push({
         value: key,
         name: $scope.arr[key]
        });
    }
};
share|improve this answer

welp, this is Angular so... angular.forEach().

$scope.arr = {
     "1": "A",
     "2": "B",
     "3": "C",
     "4": "D",
     "5": "E",
     "6": "F",
     "7": "Others",
     "fromDate": {
      "$date": "2015-02-13T20:59:28.947Z"
     }
}
$scope.formattedArr = [];
angular.forEach($scope.arr, function(value, key) {
    if ( key !== 'fromDate' ) {   
        this.push({value: key, name: value});
    }
}, $scope.formattedArr);

expect($scope.formattedArr).toEqual([
    {value: "1",name: "A" },
    {value: "2",name: "B" },
    {value: "3",name: "C" },
    {value: "4",name: "D" },
    {value: "5",name: "E" },
    {value: "6",name: "F" },
    {value: "7",name: "Others" }
]);

Lemme try putting it in a code snippet:

(function(angular) {
  'use strict';
angular.module('myapp', []).controller('MainCtrl', function MainCtrl() {
    this.arr = {
         "1": "A",
         "2": "B",
         "3": "C",
         "4": "D",
         "5": "E",
         "6": "F",
         "7": "Others",
         "fromDate": {
          "$date": "2015-02-13T20:59:28.947Z"
         }
    };
    this.formattedArr = [];
    angular.forEach(this.arr, function(value, key) {
      if( key !== 'fromDate') {
        this.push({value: key, name: value});
      }
    }, this.formattedArr);
  
});
})(window.angular);

    
<!doctype html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Example - example-heroComponentSimple-production</title>
  

  <script src="//code.angularjs.org/snapshot/angular.min.js"></script>

  
</head>
<body ng-app="myapp">

<div ng-controller="MainCtrl as vm">
  <b>Very basic AngularJs component example</b><br><br>
  <div><b>Before</b></div>
  <pre>arr = {{vm.arr | json}}</pre>
  <div><b>After</b></div>
  <pre>formattedArr = {{vm.formattedArr | json}}</pre>
</div>
</body>
</html>

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.