Я пытаюсь отсортировать массив объектов на основе метки времени Unix.В приведенном ниже коде у меня есть функция parseFunc (), которая исправляет строку, поступающую из CSV-файла без заголовка, и перестраивает ее в нужный мне формат.
Идея состоит в том, чтобы отсортировать массив из файла CSV по определенным периодам (день, неделя, месяц, год), используя метку времени Unix в качестве переменной, на которой будет основываться сортировка.Если моя логика верна, мне нужно выполнить сортировку перед вызовом функции parseFunc ().
Я попытался построить функцию, используя метод filter ()
function getNumber(num){
return (num == 1556015903109)
}
lines = lines.filter(getNumber);
этопросто чтобы посмотреть, смогу ли я создать массив на основе одного числа из массива объектов.
Но он возвращает пустой объект.
function parseFunc(readout) {
"use strict";
var jSON = JSON.stringify(readout),
//these are to strip the string of unwanted characters and replace
c1 = jSON.replace("[", "{"),
c2 = c1.replace("]", "}"),
c3 = c2.replace(/","/g, "\"\n}{\""),
c4 = c3.replace(/{/g, ""),
c5 = c4.replace(/,/g, "\",\""),
c6 = c5.replace(/}/g, ""),
c7 = c6.replace(/"/g, "");
// These are to separate the elements of the array and build JSON strings in a particular order.
const pL = c7.trim().split('\n').map(row => {
const cols = row.split(',')
return { label: cols.shift()}
});
const pT1 = c7.trim().split('\n').map(row =>{
const cols = row.split(',')
const cols2 = cols.shift()
return { value: cols.shift()}
});
const pT2 = c7.trim().split('\n').map(row =>{
const cols = row.split(',')
const cols2 = cols.splice(0,2)
return { value: cols.shift()}
});
const pT3 = c7.trim().split('\n').map(row =>{
const cols = row.split(',')
const cols2 = cols.splice(0,3)
return { value: cols.shift()}
});
const pT4 = c7.trim().split('\n').map(row =>{
const cols = row.split(',')
const cols2 = cols.splice(0,4)
return { value: cols.shift()}
});
}
function init() {
"use strict";
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function () {
if (this.readyState === 4 && this.status === 200) {
var lines = this.responseText.split("\n");
parseFunc(lines);
console.log(lines);
}
};
xhttp.open("GET", "DemoData.csv", true);
xhttp.send();
}
window.onload = init;
Console.log (lines) дает мне эти данные.
0: "1556015903109,1.7481,1.7489,1.7375,2.5631"
1: "1556015954378,1.7481,1.7336,1.7477,2.5631"
2: "1556016004213,1.7481,1.7336,1.7426,2.5631"
3: "1556016034313,1.7481,1.7489,1.7426,2.5631"
4: "1556016064425,1.7532,1.7489,1.7375,2.5631"
5: "1556016094494,1.7481,1.7489,1.7426,2.5631"
6: "1556016124586,1.743,1.7438,1.7426,2.5631"
7: "1556016154663,1.7481,1.7489,1.7426,2.5631"
8: "1556016187514,1.743,1.7336,1.7477,2.5631"
9: "1556016244923,1.743,1.7438,1.7426,2.5631"
element [0] - это метка времени Unix, все остальное считывается.