2017-05-15 5 views
0

ich ein Array mit diesen Werten haben, ich brauche eine Schleife auf diese Werte zu schaffen, in alasql wie in diesem Beispiel zurückzukehren:Objekt erstellen Array in foreach Javascript

http://jsfiddle.net/agershun/11gd86nx/5/

var data = { 
    "business": [ 
{ 
    "order_contents": [ 
    { 
     "id": 83, 
     "name": "product 1", 
     "price": "1.99", 
     "quantity": 1, 
     "total": "1.99", 
     "ingredients": [], 
     "extras": [] 
    }, 
    { 
     "id": 83, 
     "name": "product 1", 
     "price": "1.99", 
     "quantity": 1, 
     "total": "1.99", 
     "ingredients": [], 
     "extras": [] 
    }, 
    { 
     "id": 83, 
     "name": "product 1", 
     "price": "1.99", 
     "quantity": 1, 
     "total": "1.99", 
     "ingredients": [], 
     "extras": [] 
    }, 
    { 
     "id": 85, 
     "name": "product 3", 
     "price": "1.99", 
     "quantity": 1, 
     "total": "1.99", 
     "ingredients": [], 
     "extras": [] 
    }, 
    { 
     "id": 83, 
     "name": "product 1", 
     "price": "1.99", 
     "quantity": 1, 
     "total": "1.99", 
     "ingredients": [], 
     "extras": [] 
    }, 
    { 
     "id": 84, 
     "name": "product 2", 
     "price": "1.99", 
     "quantity": 1, 
     "total": "1.99", 
     "ingredients": [], 
     "extras": [] 
    }, 
    { 
     "id": 83, 
     "name": "product 1", 
     "price": "1.99", 
     "quantity": 1, 
     "total": "1.99", 
     "ingredients": [], 
     "extras": [] 
    }, 
    { 
     "id": 83, 
     "name": "product 1", 
     "price": "1.99", 
     "quantity": 1, 
     "total": "1.99", 
     "ingredients": [], 
     "extras": [] 
    }, 
    { 
     "id": 83, 
     "name": "product 1", 
     "price": "1.99", 
     "quantity": 1, 
     "total": "1.99", 
     "ingredients": [], 
     "extras": [] 
    }, 
    { 
     "id": 83, 
     "name": "product 1", 
     "price": "1.99", 
     "quantity": 1, 
     "total": "1.99", 
     "ingredients": [], 
     "extras": [] 
    }, 
    { 
     "id": 83, 
     "name": "product 1", 
     "price": "1.99", 
     "quantity": 1, 
     "total": "1.99", 
     "ingredients": [], 
     "extras": [] 
    }, 
    { 
     "id": 83, 
     "name": "product 1", 
     "price": "1.99", 
     "quantity": 1, 
     "total": "1.99", 
     "ingredients": [], 
     "extras": [] 
    }, 
    { 
     "id": 84, 
     "name": "product 2", 
     "price": "1.99", 
     "quantity": 1, 
     "total": "1.99", 
     "ingredients": [], 
     "extras": [] 
    } 
    ] 
    } 
] 
}; 

mein Code hier ist.

.
info.orderByChild("data").startAt("08/04/2017").endAt("12/06/2017").on('value', function(snapshot){ 
     snapshot.forEach(function(item) { 

      jsonObj = { 
       "business": [ 
      { 
       "order_contents": [ 
       { 
        "id": itemVal['id'], 
        "name": itemVal['name'], 
        "price": itemVal['price'], 
        "quantity": itemVal['quantity'], 
        "total": "itemVal['total'] 
       } 
       ] 
      } 
      ] 
     } 

seine nicht ein Array zu schaffen, wird nur der letzte Wert ..

kann mir jemand helfen?

+0

Wenn diese Firebase-bezogen ist, fügen sie es als solches kennzeichnen. –

+0

ok, es ist markiert! Danke – sealabr

+0

Sie überschreiben die gleiche Variable ('jsonObj') bei jeder Iteration, deshalb endet es mit dem letzten Element. Wo definierst du 'jsonObj' und wofür benutzt du es? –

Antwort

1

Sie haben Ihr Array am Anfang zu definieren und jedes Objekt, um es später in der Schleife hinzu:

var result = { business: [] }; // PLACEHOLDER 
var jsonObj; 
info.orderByChild("data").startAt("08/04/2017").endAt("12/06/2017").on('value', function(snapshot) { 
     snapshot.forEach(function(item) { 
      jsonObj = { 
       "order_contents": [ 
        { 
         "id": itemVal['id'], 
         "name": itemVal['name'], 
         "price": itemVal['price'], 
         "quantity": itemVal['quantity'], 
         "total": "itemVal['total'] 
        } 
       ] 
      }; 
      result.business.push(jsonObj); // ADDING EACH OBJECT TO YOUR ARRAY 
     }); 
    }); 
+0

ok, aber die Rückgabe Array [Objekt, Objekt, Objekt ......] muss sein ..... Objekt {business: Array [1]} – sealabr

+1

Ah, ich sehe, ich werde die Antwort in einer Minute aktualisieren ... – errata

+1

Hm warten, aber Sie haben ein Objekt so schon? Ihre 'data' Variable ist auf diese Weise strukturiert -' Objekt {business: Array [1]} '... – errata

0

Sie möchten die Elemente in snapshot in ein neues Array abzubilden, so dass anstelle der der Verwendung forEach Verfahren, verwenden, um die map Verfahren und das resultierende Array kehrt:

jsonObj = snapshot.map(function(item) { 
    return { 
     "business": [ 
     { 
      "order_contents": [ 
      { 
       "id": item['id'], 
       "name": item['name'], 
       "price": item['price'], 
       "quantity": item['quantity'], 
       "total": item['total'] 
      } 
      ] 
     } 
     ] 
    } 
    }); 
Verwandte Themen