2017-04-06 3 views
1

j'ai une réponse JSON à partir de laquelle je voulais créer un nouvel objet JSONvaleur marque d'une (paire de clés de valeur) pour être la clé d'une autre dans js angulaire

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

je voulais y parvenir après la manipulation des clés et la valeur paire

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

j'ai essayé de le faire de deux façons 1) dans cette erreur est survenue lors que tokken inattendu (.)

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

    }); 

2) ici obtenir jeton unxepected [

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

    }); 

i ont essayé attribuer les valeurs séparement aussi, mais il ne fonctionne pas là aussi

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++; 
     }); 

    }); 
+0

exactement ce dont vous avez besoin. [voir ceci] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map#Using_map_to_reformat_objects_in_an_array) – anoop

Répondre

1

Avec angulaire forEach vous pouvez également obtenir cette fonctionnalité

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

+0

merci @Sai votre solution a fonctionné! :) – Rajat

+0

@Rajat Votre bienvenue :) –

2

Vous pouvez utiliser la fonction javascript map pour mapper les objets à matrice

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)

0

Vous devez assigner dans l'appel http qui obtient la réponse

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

ive a essayé de l'utiliser mais il émet la même erreur (jeton inattendu) .) – Rajat