Null在最终对象
问题描述:
我聚合json对象orderData,如果他们有相同的order_id。在最后一个对象ordernewdata null是在它的第二个索引,是一个空的对象被推入新的数组。我是什么失踪?Null在最终对象
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));
答
在你的for循环,
当K = 1,这是不言而喻的if语句中。当k = 2,它会进入其他分支,换句话说,ordersnewdata.orders[2] = orders
为您的情况。所以我们忘了评估ordersnewdata.orders[1]
。这就是为什么在ordernewdata.orders
中会有null
的原因。
要防止添加null
,您可以使用ordersnewdata.orders.push(orders)
插入新的订单。
希望这有助于https://jsfiddle.net/b7t3r4ae/ –