2017-10-06 7 views
-1

Gebäude habe ich ein Objekt:korrekt ein Array von Objekten

cars = { 
    'toyota': { 
    'year': 2015, 
    'color': 'blue' 
    }, 
    'mazda': { 
    'year': 2017, 
    'color': 'white' 
    } 
} 

Ich möchte durch die Fahrzeuge in der cars Objekt iterieren und sie in ein anderes Array schieben.

for (carMake in cars) { 
    $scope.newCarsArray.push(cars[carMake]); 
} 

Die oben schiebt korrekt jedes carMake Objekt in das $scope.newCarsArray Array. Allerdings schiebt dies nur die Inhalte (zB: Jahr und Farbe) und nicht den Fahrzeugnamen (wie Toyota und Mazda). Wie kann ich jedes Objekt (einschließlich Fahrzeugname) in $scope.newCarsArray schieben, ohne das ursprüngliche Objekt zu verändern?

Ich dachte, das folgende würde funktionieren, aber es schiebt nur das Auto machen Objekt Name als Zeichenfolge.

for (carMake in cars) { 
    $scope.newCarsArray.push(carMake); 
} 

gewünschte Ausgabe:

$scope.newCarsArray = [ 
    { 
    toyota: { 
     'year': 2015, 
     'color': 'blue' 
    } 
    }, 
    { 
    mazda: { 
     'year': 2017, 
     'color': 'white' 
    } 
    } 
]; 
+2

Was ist die gewünschte Ausgabe? –

Antwort

1

Im Fall, wenn Sie car als Teil der Array-Element benötigen:

angular.forEach(cars, function(item, key) { 
    var newItem = item; 
    newItem.car = key; 
    $scope.newCarsArray.push(newItem); 
    }); 

Ausgang:

[ 
    { 
    "year": 2015, 
    "color": "blue", 
    "car": "toyota" 
    }, 
    { 
    "year": 2017, 
    "color": "white", 
    "car": "mazda" 
    } 
] 

Demo Fiddle

+0

Nicht genau die Struktur, die ich suchte, aber das funktioniert. Vielen Dank – bruh

1

Erstellen Sie ein neues Objekt mit dem Schlüsselnamen und drücken Sie, dass:

Objects.keys(cars).forEach(function(car) { 
    $scope.newCarsArray.push({ 
     [car]:cars[car] 
    }); 
}); //Outputs like: [{"toyota": {}}, ..] 
+0

Ich habe das in einer Geige versucht, funktioniert wie ein Zauber. Vielen Dank. Ich konnte es nicht in meinem Projekt arbeiten, weil mein Linter auf der Linie "[Auto]: Autos [Auto]" ausflippte. – bruh

+0

@bruh - Ja, das wird passieren, ich glaube es ist ES6 Syntax. – tymeJV

Verwandte Themen