Я пытаюсь отсортировать этот нормализованный набор данных в заказы с элементами, начинающимися с set_no = 0
, line_no = 0
.
С помощью этой функции все элементы отображаются правильно, но set_no
и line_no
не обновляются.
let data = JSON.parse('[{"header":{"set_no":0},"line":{"line_no":2},"order":{"cart_id":"X1"}},{"header":{"set_no":4},"line":{"line_no":6},"order":{"cart_id":"X2"}},{"header":{"set_no":8},"line":{"line_no":10},"order":{"cart_id":"X1"}}]');
function denormalizeData(data) {
let result = Object.values( // Index keys, starting with 0
data.reduce((r, { order }, i, arr) => { // Push items to order, matching on unique cart_id
let item = arr[i];
r[order.cart_id] = (r[order.cart_id] || { order, items: [] });
r[order.cart_id].items.push(item);
return r;
}, {})
);
console.log(JSON.stringify(result));
}
denormalizeData(data);
Например, в этом случае целью будет сортировка и обновление строк 0 и 1 для набора 0 и строки 0 для набора 1.
Как мне начать с set_no = 0
и line_no = 0
при настройке нового массива и увеличивать каждый соответственно при нажатии новых индексов?
Ожидаемый результат
[
{
"order":{
"cart_id":"X1"
},
"items":[
{
"header":{
"set_no":0
},
"line":{
"line_no":0
}
},
{
"header":{
"set_no":0
},
"line":{
"line_no":1
}
}
]
},
{
"order":{
"cart_id":"X2"
},
"items":[
{
"header":{
"set_no":1
},
"line":{
"line_no":0
}
}
]
}
]