2017-05-24 2 views
0

Ich habe ein Objekt:js extrahieren Eigenschaftswerte von Namen

{ 
name: "user", 
facebook: { 
    followers: 2341 
}, 
instagram: { 
    followers: 5345 
} 
} 

Wie kann ich ein Array aller Anhänger bekommen Werte ohne explizit den Pfad angeben (zB Es könnte auch twitter statt facebook sein)

[2341, 5345] 
+0

Ist ihre Möglichkeit einer Verschachtelung, oder ist die Struktur, die Sie zeigen, auf diese Tiefe begrenzt? – JAAulde

+0

@JAAulde Ja, es kann Verschachtelung geben. Danke für den Hinweis – Chris

+0

Ihre Antwort ist [hier] (https://stackoverflow.com/questions/684672/how-do-i-loop-through-o-en-umerate-a-javascript-object) – Abk

Antwort

1

Sie werden wahrscheinlich eine for..in-Schleife verwenden wollen, um alle Eigenschaften des Objekts zu durchlaufen, dann zu überprüfen, ob sie eine Eigenschaft haben, und diese Eigenschaft schließlich zu einer Liste hinzufügen. ZB:

let myObj = { 
 
    name: "user", 
 
    facebook: { 
 
     followers: 2341 
 
    }, 
 
    instagram: { 
 
     followers: 5345 
 
    } 
 
} 
 

 
let followers = []; 
 

 
for (var prop in myObj) { 
 
    if (myObj[prop].hasOwnProperty('followers') && typeof myObj[prop].followers === 'number'){ 
 
    followers.push(myObj[prop].followers); 
 
    } 
 
} 
 
    
 
console.log(followers)

+0

sry, ich habe vergessen Erwähnen Sie, dass die Eigenschaften auch tiefer im Objekt verschachtelt sein können – Chris

+0

@Chris, wie tief? Können Sie ein Beispielobjekt angeben? – Abk

+0

Wenn Sie tief verschachtelte "Follower" benötigen, benötigen Sie einen völlig anderen Ansatz. Schau dir @ roberts Antwort an –

1

Dieses Skript sucht nach allen Vorkommen der Stichwort "Follower" und fügt sie der Array-Wert ...

var followers = { 
 
    name: "user", 
 
    facebook: { 
 
    followers: 2341, 
 
    test: { 
 
     followers: 1, 
 
    }, 
 
    }, 
 
    instagram: { 
 
    followers: 5345 
 
    } 
 
}; 
 

 
var followerArray = []; 
 

 
var getFollowers = function(obj) { 
 
    for (var node in obj) { 
 
    if (typeof obj[node] === 'object') { 
 
     getFollowers(obj[node]); 
 
    } 
 
    
 
    if (node === 'followers') { 
 
     followerArray.push(obj[node]); 
 
    } 
 
    } 
 
} 
 

 
getFollowers(followers); 
 

 
console.log(followerArray);

Verwandte Themen