Я пытаюсь нормализовать набор данных, обновить индекс массива, а затем денормализовать данные.
Я бы хотел изменить P.O. в строке заголовка, и изменение распространяется на связанный порядок.
Модель данных выглядит следующим образом:
let numSet = 0;
let numLine = 2;
let data = [
{
"order": {
"po_no": "original-po"
},
"items": [
{
"header": {
"po_no": "keep-this-value",
"set_no": 0
},
"line": {
"id": "A123",
"line_no": 1
}
},
{
"header": {
"po_no": "update-with-this-value",
"set_no": 0
},
"line": {
"id": "B234",
"line_no": 2
}
}
]
}
];
// The logic to normalize the data (appending the order data to each index), works as expected
let normalizedDataSet = [];
for (let i = 0; i < data.length; i++) {
for (let j = 0; j < data[i]['items'].length; j++) {
data[i]['items'][j]['order'] = data[i]['order']; // Set default header
normalizedDataSet.push(data[i]['items'][j]);
}
}
// The logic to update the normalized data, updating too many indices
for (i = 0; i < normalizedDataSet.length; i++) {
let index = normalizedDataSet[i];
if (numSet === index['header']['set_no'] && numLine === index['line']['line_no']) {
index['order']['po_no'] = index['header']['po_no'];
}
}
console.log(normalizedDataSet); // Expected output below
Ожидаемый результат:
normalizedDataSet = [
{
"header": {
"po_no": 'keep-this-value',
"set_no": 0
},
"line": {
"id": 'A123',
"line_no": 1
},
"order": {
"po_no": 'original-po'
}
},
{
"header": {
"po_no": 'update-with-this-value',
"set_no": 0
},
"line": {
"id": 'B234',
"line_no": 2
},
"order": {
"po_no": 'update-with-this-value'
}
}
]
При построчном ведении журнала кажется, что он установлен правильно, но затем возникает сбой при входе в систему после выхода второго цикла for.
После обновления данных я бы хотел использовать исходную схему.
Проблема, с которой я столкнулся, заключается в том, что логика обновления изменяет все записи в одном и том же порядке, а не просто обновляет одну строку. (т.е. он обновляет (set_no = 0, line_no = 1)
и (set_no = 0, line_no = 2)
, когда он должен обновлять только второй случай.
В таком случае, как мне обновить только второй индекс нормализованного набора данных?