2016-04-21 5 views
0

Hier mein Objekt zuzugreifen ist:Wie spezifischen Eigenschaften in einem mehrere Objekte mit JS

$scope.info = []; 
$scope.info = [{"name":"kanye","size":"","folder":"Folder"},{"name":"west","size":"","folder":"Folder"}] 
$scope.infoObj = $scope.info.name; 
console.log($scope.infoObj); 

Diese Rückkehr mich nicht definiert. Die Antwort soll wie folgt sein:

[{"name":kanye},{"name":west}] 

Aber wie die spezifischen Eigenschaften von einem mehr Objekt zuzugreifen AngularJS oder jquery/js verwenden?

+1

Beachten Sie, dass '[]' bedeutet *** Array ***, die mit den Dingen allgemein zugänglich sind wie '[0]', also sollten Sie vielleicht versuchen $ scope.info [0] .name' – adeneo

+0

Ich habe es schon versucht, aber nur der Wert von info [0] .name angezeigt. Beispiel: {"name": kanye}. – Amboom

+0

Die Konsole sollte 'kanye' ausgeben, da dies der Name des ersten Objekts ist, der in der Position '[0]' im Array. Um die zweite zu erhalten, würden Sie '$ scope.info [1] .name' usw. – adeneo

Antwort

0

Sie können tatsächlich tun ein wenig Refactoring, um Ihren Code ein wenig sauberer zu machen und lesbarer. Anstatt Ihren Wert info zweimal festzulegen, legen Sie ihn einmal fest und fügen Sie die Objekte in jeder Zeile danach hinzu.

So:

$scope.info = []; 
$scope.info.push({ 
    "name":"kanye", 
    "size":"", 
    "folder":"Folder" 
}); 
$scope.info.push({ 
    "name":"west", 
    "size":"", 
    "folder":"Folder" 
}); 

Sehen Sie, wie sauber das ist? Jetzt sollte es ziemlich offensichtlich sein, dass info ein Array von Objekten ist, so wird $scope.info.name wird nicht funktionieren. Was ich empfehlen würde, ist eine Lookup-Funktion zu erstellen, die helfen kann, eine Liste basierend auf dem Schlüssel zu erhalten, den Sie ihm zur Verfügung stellen.

Etwas wie folgt aus:

function lookup(key) { 
    var result = []; 
    for (var i = 0; i < $scope.info.length; i++) { 
    var object = {}; 
    object[key] = $scope.info[i][key]; 
    result.push(object); 
    } 
    return result; 
} 

Und dann es so nennen:

$scope.infoObj = lookup('name'); 
console.log($scope.infoObj); 
+0

Danke, dass es funktioniert. :) – Amboom

3

Dies das Problem lösen sollte:

$scope.infoObj = $scope.info.map(function(obj){ 
    var x = {}; 
    x['name'] = obj['name']; 
    return x; 
}) 

für ES6, kann es zu vereinfachen:

$scope.infoObj = $scope.info.map(x => ({name:x['name']})) 
+0

oder' $ scope.info.map (obj => ({name: obj.name}); ' –

+0

Gut zu sehen Du hast Juan's Syntaxfehler behoben. ;-) – RobG

Verwandte Themen