Сортировать массив объектов с меткой времени Unix - PullRequest
0 голосов
/ 27 сентября 2019

Я пытаюсь отсортировать массив объектов на основе метки времени 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, все остальное считывается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...