2016-08-09 4 views
-1

Bitte helfen Sie mir mit dieser Anpassung von Objekten in Javascript, ich bin ein wenig fest.Anpassen von Objekten in JavaScript

Objekt

var stocks = [ 
{ 
    "size": "2", 
    "count": 5, 
    "store": { 
     "id": 3, 
     "title": "Belconnen" 
    } 
}, 
{ 
    "size": "3", 
    "count": 4, 
    "store": { 
     "id": 4, 
     "title": "Canberra" 
    } 
}, 
{ 
    "size": "4", 
    "count": 4, 
    "store": { 
     "id": 5, 
     "title": "Bankstown" 
    } 
}, 
{ 
    "size": "5", 
    "count": 5, 
    "store": { 
     "id": 4, 
     "title": "Canberra" 
    } 
}]; 

Erwartete Ausgabe

{3:{"sizes": {2: 3}}}, 
{4:{"sizes": {3: 3, 5: 3}}}, 
{5:{"sizes": {4: 3}}} 

Mein Code bisher

for (var key in stocks) { 
    var stock = stocks[key]; 

    stores[stock.store.id] = stock.store; 
    var store = stores[stock.store.id]; 

    if (!store.sizes || !store.sizes.length) { 
     store.sizes = [stock.size]; 
    } 
} 

aber es hält den ersten Größenwert des Speichers overiding.

Vielen Dank im Voraus.

+0

Diese irgendwie zu lösen Transformation aufgerufen wird Objekte! Und die erwartete Ausgabe ist nicht einmal gültig, äh ... Etwas gültig. –

+0

Zeig uns, was du bisher versucht hast und wo du feststeckst. –

+0

'für (var Schlüssel auf Lager) { \t \t \t var Lager = Aktien [Schlüssel]; \t \t \t speichert [stock.store.id] = stock.store; \t \t \t var store = speichert [stock.store.id]; \t \t \t wenn { \t \t \t \t store.sizes = [stock.size] (store.sizes || store.sizes.length!); \t \t \t} \t \t \t //console.log(stock); \t \t} 'es behält den ersten Wert der Größe in der Filiale. –

Antwort

1

Dies ist eine Möglichkeit, das Problem

var stocks = [ 
 
    {"size": 2, "count": 3, "store": {"id": 3, "name": "Canberra"}}, 
 
    {"size": 3, "count": 3, "store": {"id": 4, "name": "Belconnen"}}, 
 
    {"size": 4, "count": 3, "store": {"id": 5, "name": "Bankstown"}}, 
 
    {"size": 5, "count": 3, "store": {"id": 4, "name": "Belconnen"}}]; 
 
    
 
    var obj = {}; 
 
    
 
    stocks.forEach(function(item){ 
 
     // initialize if object key not present 
 
     if(!obj[item.store.id]){ 
 
      obj[item.store.id] = {"sizes": {}}; 
 
     } 
 
     obj[item.store.id]["sizes"][item.size] = item.count; 
 
    }); 
 
    
 
    console.log(obj);

Hier wird der Arbeits Geige https://jsfiddle.net/flyinggambit/nc3uny53/

Überprüfen Sie das Konsolenfenster für Geige Ausgabe