Я создал строки var для создания CSV.Я хотел бы отсортировать содержимое по 2 столбцам: ДАТА и ВРЕМЯ.
DATE;TIME;ID;FACE;TOTAL;VAL1;VAL2;
07/05/2019;14:11:07;3234;0.00000038;2.00;-0.00000038;0;
07/05/2019;**16:11:07**;1779;0.00000019;2.00;-0.00000019;0;
07/05/2019;14:11:06;4120;0.00000304;2.00;0.00000304;1;
26/05/2019;**06:32:39**;2167;0.00000015;2.00;-0.00000015;0;
26/05/2019;06:32:38;5152;0.00000015;2.00;0.00000015;1;
**07/05/2019**;14:11:18;7949;0.00000038;2.00;-0.00000038;0;
ожидаемый результат:
DATE;TIME;ID;FACE;TOTAL;VAL1;VAL2;
07/05/2019;14:11:06;4120;0.00000304;2.00;0.00000304;1;
07/05/2019;14:11:07;3234;0.00000038;2.00;-0.00000038;0;
07/05/2019;14:11:18;7949;0.00000038;2.00;-0.00000038;0;
07/05/2019;16:11:07;1779;0.00000019;2.00;-0.00000019;0;
26/05/2019;06:32:38;2167;0.00000015;2.00;-0.00000015;0;
26/05/2019;06:32:39;5152;0.00000015;2.00;0.00000015;1;
var lines = rows.split('\n');
for(var loop = 0; loop < lines.length; loop++){
if (parseFloat(prev) > 0){val2= 1;}else {val2 = 0;}
(....)
lines[loop] = lines[loop].replace(/(\r\n|\n|\r|\s+)/gm,"").trim() + val1 + ";" + val2 + ";";
}
rows = lines.join('\n');
, поскольку сложно использовать строки массива, ядумал об использовании свойств массива индекса.Но строки не рассматриваются как массив, поэтому forEach не может быть использован.
var result = lines.reduce(function(r, a) {
a.forEach(function(s, i) {
var key = i === 0 ? 'headers' : 'col' + i;
r[key] || (r[key] = []);
r[key].push(s);
});
return r;
}, {});
function compare(r,x,col) {
if (r[x].col< r[x+1].col) return -1;
if (r[x].col > r[x+1].col) return 1;
return 0;
}
for(var loop = 0; loop < r.length; loop++){
result.sort(compare(r,loop,col1));
result.sort(compare(r,loop,col2));
}
Как применить критерии двойной сортировки и получить строки, как ожидается, в этом массиве?
мой кодиспользуется в Google Chrome.Некоторые функции, такие как прототип, не работают (или не фильтруют ...)