我从后到前传输数据。我得到一个包含数组 [Array(7)、Array(7)、Array(7) 等的数组。
数组内部类似于 [id, name, error1, error2, error3, comment, 1]。
我需要这些数据作为表格。由于名称可能重复,并且我需要组合字符串,因此我循环遍历数组并使用相同的名称进行搜索,如果找到它,则形成数组 [{content : name, rowspan: n}, error1,错误2,错误3,评论,1],[错误1,错误2,错误3,评论,1]等等。
let uniqueNames = [...new Set(info.map(item => item[1]))];
let mergedData = [];
uniqueNames.forEach(name => {
let rowsWithName = info.filter(item => item[1] === name);
let rowspan = rowsWithName.length;
rowsWithName.forEach((item, index) => {
let row = [];
if (index === 0) {
row.push({ content: name, rowSpan: rowspan, styles: {textColor: [0,0,0]}});
}
row.push(item[2], item[3], item[4], item[5], item[6]);
mergedData.push(row);
});
});
现在我需要检查错误,这意味着我可以有 error1 3 次、error2 1 次和 error3 null。我需要得到一个像这样的数组
[
[
{ content: 'Имя', rowSpan: 3},
{ content: 'error1', rowSpan: 1},
{ content: 'error2', rowSpan: 3},
{ content: 'Всё ок', rowSpan: 3}
],
[
{ content: 'Error1', rowSpan: 1}
],
[
{ content: 'Erorr1', rowSpan: 1}
]
]
嗯,也就是说,我收到 [name1, error1, error2, null, comment], [name1,error1, null, null, comment] , [name2 ..... 并且我需要根据行数形成一个 rowspan这些行或空
输入数组的示例:
[
[28175, 'УАЗ Буханка 1', 'Потеря данных кол. 1 длительность 0Д 0Ч 42М 39С', null, null, null, 1],
[28175, 'УАЗ Буханка 1', 'Критически низкое напряжение кол. 6 длительность 0Д 0Ч 0М 5С', null, null, null, 1],
[28175, 'УАЗ Буханка 1', 'Отключение питания кол. 1 длительность 0Д 2Ч 11М 39С', null, null, null, 1],
[28175, 'УАЗ Буханка 1', null, 'Отключение ДУТа кол. 1 длительность 0Д 0Ч 0М 1С', null, null, 1],
[28193, 'УАЗ Буханка 2', 'Критически низкое напряжение кол. 1 длительность 0Д 0Ч 0М 0С', null, null, null, 1],
[29915, 'FAW J6P-390', 'Критически низкое напряжение кол. 1 длительность 0Д 0Ч 0М 1С', null, null, null, 1],
[29933, 'FAW J6P-390', 'Критически низкое напряжение кол. 1 длительность 0Д 0Ч 0М 0С', null, null, null, 1],
[29333, 'Камаз', null, null, 'Слито топливо', null, 1]
]
我想得到什么
[
[
{ content: 'УАЗ Буханка 1', rowSpan: 3},
{ content: 'Потеря данных кол. 1 длительность 0Д 0Ч 42М 39С', rowSpan: 1},
{ content: 'Отключение ДУТа кол. 1 длительность 0Д 0Ч 0М 1С', rowSpan: 3},
{ content: 'Ошибок нет', rowSpan: 3}
],
[
{ content: 'Критически низкое напряжение кол. 6 длительность 0Д 0Ч 0М 5С', rowSpan: 1}
],
[
{ content: 'Отключение питания кол. 1 длительность 0Д 2Ч 11М 39С', rowSpan: 1}
],
[
{ content: 'УАЗ Буханка 2', rowSpan: 1},
{ content: 'Критически низкое напряжение кол. 1 длительность 0Д 0Ч 0М 0С', rowSpan: 1},
{ content: 'Ошибок нет', rowSpan: 1},
{ content: 'Ошибок нет', rowSpan: 1}
],
[
{ content: 'FAW J6P-390', rowSpan: 2},
{ content: 'Критически низкое напряжение кол. 1 длительность 0Д 0Ч 0М 1С', rowSpan: 1},
{ content: 'Ошибок нет', rowSpan: 2}, { content: 'Ошибок нет', rowSpan: 2}
],
[
{ content: 'Критически низкое напряжение кол. 6 длительность 0Д 0Ч 0М 5С', rowSpan: 1}
],
[
{ content: 'Критически низкое напряжение кол. 1 длительность 0Д 0Ч 0М 0С', rowSpan: 1}
],
[
{ content: 'Камаз', rowSpan: 1},
{ content: 'Ошибок нет', rowSpan: 1},
{ content: 'Ошибок нет', rowSpan: 1},
{ content: 'Слито топливо', rowSpan: 1}
]
]
怎么做?