В моем коде есть поле поиска, где пользователь может искать информацию о другом пользователе с помощью идентификатора.После завершения поиска система вернет массив $scope.mixedList
.Это динамический массив и вывод может быть разным.
Мне нужно проверить:
if(cat_id == previous_cat_id && process_id == previous_process_id){
summarize output;
summarize achievement;
merge rows in table;
}else{
output = output;
achievement = achievement;
do not merge rows in table;
}
Для этого я создал функцию calculateCategory
:
var cat_output = 0;
var cat_achievement = 0;
function calculateCategory(list) {
if (list.length > 0) {
list[0].OutAchCatRowMatch=false;
for (var i = 0; i < list.length; i++) {
var process_id = list[i].process_id;
var cat_id = list[i].cat_id;
var output = list[i].output;
var achievement = list[i].achievement;
var outp_rows = 1;
for (var j = i + 1; j < list.length; j++) {
if (process_id === list[j].process_id && cat_id === list[j].cat_id) {
outp_rows++;
cat_output = parseFloat(list[j].output) + parseFloat(output);
cat_achievement = parseFloat(list[j].achievement) + parseFloat(achievement);
list[j].OutAchCatRowMatch=true;
}else{
cat_output = parseFloat(list[j].output);
cat_achievement = parseFloat(list[j].achievement);
list[j].OutAchCatRowMatch=false;
break;
}
}
list[i].cat_output = cat_output;
list[i].cat_achievement = cat_achievement;
list[i].outp_rows = outp_rows;
}
}
}
Вот два примера вывода массиваи вывод html таблицы:
Первый результат должен быть с объединенными строками, а первая объединенная строка неверна:
$scope.mixedList = [
{ pcode: "ENC2", cat_id: "5", process_id: "4", output: "102", achievement: 33.55 },
{ pcode: "LMA", cat_id: "5", process_id: "4", output: "11", achievement: 3.62 },
{ pcode: "ENC2", cat_id: "5", process_id: "3", output: "92", achievement: 28.22 },
{ pcode: "LMA", cat_id: "5", process_id: "3", output: "11", achievement: 3.37 },
];
![First row is wrong here](https://i.stack.imgur.com/emeLz.jpg)
Второй массив не нужно объединять, потому что cat_id
и process_id
отличаются.Вот только беспорядок:
$scope.mixedList = [
{ pcode: "LMA KEY", cat_id: "7", process_id: "5", output: "5.13", achievement: 1.95 },
{ pcode: "TFY", cat_id: "8", process_id: "5", output: "50.64", achievement: 21.28 },
{ pcode: "LMA INB", cat_id: "7", process_id: "6", output: "5.13", achievement: 1.91 },
];
![enter image description here](https://i.stack.imgur.com/6lwD6.jpg)
Что не так с моей функцией?Как я могу изменить его, чтобы он работал?