2017-08-29 4 views
0

Je cherche à pousser plusieurs objets JSON dans un seul objet.Pousser plusieurs objets dans un seul objet

Actuellement, je suis l'analyse d'un tableau à partir AJAX et consolent les journaux comme celui-ci

0:{id: "24", user: "Joe", pass: "pass", name: "Joe Bloggs", role: "Technical Support", …} 
1:{id: "25", user: "Jim", pass: "pass", name: "Jim Bloggs", role: "Technical Support", …} 
2:{id: "26", user: "John", pass: "pass", name: "John Bloggs", role: "Technical Support", …} 

Je dois courir une boucle et pousser tous les années id et l'utilisateur en une seule ligne, dans ce format exact

0: {Joe : 24, Jim : 25, John : 26} 

Comment est-ce que je peux faire ceci?

Merci

Répondre

1

Vous pouvez réduire les données à un nouvel objet:

let a = [{id: "24", user: "Joe", pass: "pass", name: "Joe Bloggs", role: "Technical Support"}, 
 
{id: "25", user: "Jim", pass: "pass", name: "Jim Bloggs", role: "Technical Support"}, 
 
{id: "26", user: "John", pass: "pass", name: "John Bloggs", role: "Technical Support"}] 
 

 
let res = a.reduce((a,b) => { 
 
    a[b.user] = b.id; 
 
    return a; 
 
}, {}); 
 

 
console.log(res);

Ou si vous préférez déstructurer

let a = [{id: "24", user: "Joe", pass: "pass", name: "Joe Bloggs", role: "Technical Support"}, 
 
{id: "25", user: "Jim", pass: "pass", name: "Jim Bloggs", role: "Technical Support"}, 
 
{id: "26", user: "John", pass: "pass", name: "John Bloggs", role: "Technical Support"}] 
 

 
let res = {}; 
 
for (let {id, user} of a) { 
 
    res[user] = id; 
 
} 
 

 
console.log(res);

+0

Comment faire cela, mais transmettre un résultat parseJSON à partir d'une requête AJAX? –

+0

Je ne comprends pas la question. Remplacez juste 'a.reduce' par' .reduce' @Sam – baao

+0

Désolé, en utilisant la méthode de destruction que je veux passer dans un objet que j'ai récupéré à partir d'un appel AJAX. 'succès: fonction (résultats) {var résultat = .parseJSON (résultats);' –