Я пытаюсь написать алгоритм, который сортирует эту таблицу по среднему значению из каждого столбца, сгруппированного по первому столбцу (имени), чтобы в таблице отображались только строки с наиболее распространенными значениями. Например, это текущий таблица:
и после сортировки должно выглядеть так:
Итак, это массив, который я пытаюсь отсортировать и показать только самые распространенные табличные значения:
var testArray = [
{
"testName": "10b1",
"SG": 1.010,
"pH":6,
"LEU": "NEG",
"NIT": "NEG",
"PRO": "NEG",
"GLU": "NORM",
"KET": "NEG",
"UBG": "NORM",
"BIL": "NEG",
"Hb": "NEG"
},
{
"testName": "10b1",
"SG": 1.010,
"pH":6,
"LEU": "NEG",
"NIT": "NEG",
"PRO": "NEG",
"GLU": "NORM",
"KET": "NEG",
"UBG": "NORM",
"BIL": "NEG",
"Hb": "NEG"
},
{
"testName": "10b1",
"SG": 1.010,
"pH":6,
"LEU": "NEG",
"NIT": "NEG",
"PRO": "NEG",
"GLU": "NORM",
"KET": "NEG",
"UBG": "NORM",
"BIL": "NEG",
"Hb": "NEG"
},
{
"testName": "10b1",
"SG": 1.010,
"pH":6,
"LEU": "NEG",
"NIT": "NEG",
"PRO": "NEG",
"GLU": "NORM",
"KET": "NEG",
"UBG": "NORM",
"BIL": "NEG",
"Hb": "NEG"
},
{
"testName": "10b1",
"SG": 1.010,
"pH":6,
"LEU": "NEG",
"NIT": "NEG",
"PRO": "NEG",
"GLU": "NORM",
"KET": "NEG",
"UBG": "NORM",
"BIL": "NEG",
"Hb": "NEG"
},
{
"testName": "10b1.5",
"SG": 1.010,
"pH":6,
"LEU": "NEG",
"NIT": "NEG",
"PRO": "NEG",
"GLU": 50,
"KET": "NEG",
"UBG": "NORM",
"BIL": "NEG",
"Hb": 50
},
{
"testName": "10b1.5",
"SG": 1.010,
"pH":6,
"LEU": "NEG",
"NIT": "NEG",
"PRO": "NEG",
"GLU": 50,
"KET": "NEG",
"UBG": "NORM",
"BIL": "NEG",
"Hb": 50
},
{
"testName": "10b1.5",
"SG": 1.010,
"pH":6,
"LEU": "NEG",
"NIT": "NEG",
"PRO": "NEG",
"GLU": 50,
"KET": "NEG",
"UBG": "NORM",
"BIL": "NEG",
"Hb": 50
}
];
Я пытался использовать этот алгоритм, но результат, который возвращает меня, далек от ожидаемого результата:
var mf = 1;
var m = 0;
var item;
var count = 1;
for(let k = 0; k < testArray.length; k++){
for(let v = 0; v < testArray[k].values.length; v++){
current = 1;
for(j = v; j <= testArray[k].values.length; j++){
if(testArray[k].values[v] == testArray[k].values[j]){
m++;
}
if(mf < m){
mf=m;
item = testArray[k].values[v];
testArray[k].values = [];
}
}
testArray[k].values[v] = item;
}
}
Буду признателен, если кто-нибудь даст пример алгоритма или решение проблемы:)