1

i am having a json response from which i wanted to create new json object

response = [
         {Detail:"Reuters ID",keyName:"Reuters_ID"},
         {Detail:"Parity One",keyName:"parity_one"},
         {Detail:"Parity level",keyName:"parity_level"}
        ];

i wanted to achieve this after manipulating keys and value pair

lang_Arr =[
      {Reuters_ID:"Reuters ID"},
      {parity_one:"Parity One"},
      {parity_level:"Parity level"}
     ];

i have tried doing it in two ways 1) in this getting error as unexpected tokken (.)

    var Lang_arr =[];
    angular.forEach(response, function(value, key) { 
     Lang_arr.push({value.keyName:value.Detail});

    });

2) here getting unxepected token [

 var Lang_arr =[];
    angular.forEach(response, function(value, key) { 
     Lang_arr.push({value['keyName']:value['Detail']});

    });

i have tried assigning the values seperatly too but it doesn't work there also

    var Lang_arr=[];
        var k ='';
        var v ='';
        var i = 1;

    angular.forEach(response, function(value, key) { 
        k ='';
        v ='';
        i = 1;
        angular.forEach(value,function(val,key){
            if(i == 1 )
                k = val;
            if(i == 2)
                v = val;

            if(!empty(k) && !empty(v))
                Lang_arr.push({k:v})



            i++;
        }); 

    });
Rajat
  • 111
  • 4
  • 14
  • exactly what you need. [see this](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map#Using_map_to_reformat_objects_in_an_array) – anoop Apr 06 '17 at 09:19

3 Answers3

2

You can use javascript map function to map the objects to array

var response = [
         {Detail:"Reuters ID",keyName:"Reuters_ID"},
         {Detail:"Parity One",keyName:"parity_one"},
         {Detail:"Parity level",keyName:"parity_level"}
];
        
var lang_Arr =[];

lang_Arr = response.map(function(o){
  var obj = {};
  obj[o.Detail] = o.keyName;
  return obj;
  
})

console.log(lang_Arr)
Sachila Ranawaka
  • 39,756
  • 7
  • 56
  • 80
1

With Angular forEach also you can achieve this functionality

var response = [
         {Detail:"Reuters ID",keyName:"Reuters_ID"},
         {Detail:"Parity One",keyName:"parity_one"},
         {Detail:"Parity level",keyName:"parity_level"}
        ];
        var modifiedArray = [];
      angular.forEach(response, function(val, key) {
        var res = {};
            res[val.keyName] = val.Detail;
        this.push(res);
        }, modifiedArray);  

console.log(modifiedArray)

Working Example in Fiddle

S B
  • 1,363
  • 12
  • 21
0

You have to assign it in the http call that gets the response

$htpp.get(....).then(function(response){
lang_arr = []; 
 response.forEach(function(obj){
    var item = {obj.keyName : obj.detail};
    lang_arr.push(item);
}