2017-02-18 4 views
0

Ich bin json object orderData aggregieren, wenn sie die gleiche order_id haben. Im endgültigen Objekt ordernewdata Null kommt am zweiten Index in it.ist ein leeres Objekt in das neue Array geschoben wird. Was ist das, was ich bin fehlt?Null kommt im endgültigen Objekt

var ordersData={ 
    "orders":[ 
    { 
     "order_id": 1, 
     "user_id": 294, 
     "amount": 500, 
     "discount": 100, 
     "created_at": "2016-11-07T07:36:46.000Z", 
     "item_name": "Veg Manchurian Dry", 
     "item_id": 1 
    }, 
    { 
     "order_id": 1, 
     "user_id": 294, 
     "amount": 500, 
     "discount": 100, 
     "created_at": "2016-11-07T07:36:46.000Z", 
     "item_name": "Veg Chopsuey", 
     "item_id": 2 
    }, 
     { 
     "order_id": 2, 
     "user_id": 294, 
     "amount": 500, 
     "discount": 100, 
     "created_at": "2016-11-07T07:38:42.000Z", 
     "item_name": "Veg Chopsuey", 
     "item_id": 2 
    }, 


    ] 
} 

    var ordersnewdata ={ 
    "orders":[ 
    { 
     "order_id": 1, 
     "user_id": 1, 
     "amount": 1, 
     "discount": 1, 
     "created_at": "", 
     "items":[] 
    } 
    ] 
    }; 


     var i=0; 
    for(k=i+1;k<ordersData.orders.length;k++){ 

     if(ordersData.orders[i].order_id==ordersData.orders[k].order_id){ 
      var item_name = ordersData.orders[k].item_name; 
      var item_id = ordersData.orders[k].item_id; 
      var obj  = {item_name:item_name,item_id:item_id}; 
      ordersnewdata.orders[i].items.push(obj);     
     } 

    else{ 

     var orders={ 
     order_id : ordersData.orders[k].order_id, 
     user_id  : ordersData.orders[k].user_id, 
     amount  : ordersData.orders[k].amount_id, 
     discount : ordersData.orders[k].discount_id, 
     created_at : ordersData.orders[k].created_at, 
     items  : {item_name:ordersData.orders[k].item_name,item_id:ordersData.orders[k].item_id}, 
     };  
     ordersnewdata.orders[k]=orders; 
    } 

    } 


console.log(JSON.stringify(ordersnewdata)); 
+0

Hoffen, das hilft https://jsfiddle.net/b7t3r4ae/ –

Antwort

0

In Ihrer for-Schleife,

Wenn k = 1, geht es in der if-Anweisung. Wenn k = 2, geht es innerhalb der sonst Zweig, mit anderen Worten, ordersnewdata.orders[2] = orders für Ihre Situation. Wir haben also vergessen, ordersnewdata.orders[1] auszuwerten. Aus diesem Grund wird es null in ordernewdata.orders geben.

Um das Hinzufügen von null zu verhindern, können Sie ordersnewdata.orders.push(orders) verwenden, um eine neue Bestellung einzufügen.

Verwandte Themen