typescript - Hur man visar en array baserat på datum i javascript
Här är koden:
list.component.ts
const data1 = [
{
dateStart: "2020-02-14 00:00:01",
name: 'Server1'
},
{
dateStart: "2020-02-13 14:00:01",
name: 'Server1'
},
{
dateStart: "2020-02-13 13:00:01",
name: 'Server1'
},
{
dateStart: "2020-02-13 12:00:01",
name: 'Server1'
},
{
dateStart: "2020-02-13 11:00:01",
name: 'Server1'
}
];
const data2 = [
{
dateStart: "2020-02-13 14:00:01",
name: 'Server2'
},
{
dateStart: "2020-02-13 13:00:01",
name: 'Server2'
},
{
dateStart: "2020-02-13 12:00:01",
name: 'Server2'
},
{
dateStart: "2020-02-13 11:00:01",
name: 'Server2'
},
{
dateStart: "2020-02-12 11:00:01",
name: 'Server2'
},
{
dateStart: "2020-02-11 11:00:01",
name: 'Server2'
},
]
const arr = new Array();
arr.push(data1, data2);
arr.forEach(server => {
const rec = orderBy(server, ['dateStart'], ['desc']);
console.log(rec);
});
}
Det jag vill är att om data1 har en array(16) så har data2 en array(20) och båda har samma datum men data2 har äldre data som inte borde visas.
utdata ska vara så här:
[
{
dateStart: "2020-02-14 00:00:01",
name: "Server1"
},
{
dateStart: "2020-02-13 14:00:01",
name: "Server1"
},
{
dateStart: "2020-02-13 13:00:01",
name: "Server1"
},
{
dateStart: "2020-02-13 12:00:01",
name: "Server1"
},
{
dateStart: "2020-02-13 11:00:01",
name: "Server1"
}
],
[
{
dateStart: "2020-02-13 14:00:01",
name: 'Server2'
},
{
dateStart: "2020-02-13 13:00:01",
name: 'Server2'
},
{
dateStart: "2020-02-13 12:00:01",
name: 'Server2'
},
{
dateStart: "2020-02-13 11:00:01",
name: 'Server2'
}
]
här är koden: https://stackblitz.com/edit/angular-akhhbp
om det finns en ny array, som är data3 och den har en array(25) så kommer den att jämföra varandra. som data1, data2 och data3, om deras datum inte matchar kommer det inte att visas.
exempel :
data1 = [{
dateStart: "2020-02-13 14:00:01",
name: 'Server1'
},
{
dateStart: "2020-02-13 13:00:01",
name: 'Server1'
},
{
dateStart: "2020-02-13 12:00:01",
name: 'Server1'
}]
data2 = [ {
dateStart: "2020-02-13 14:00:01",
name: 'Server2'
},
{
dateStart: "2020-02-13 13:00:01",
name: 'Server2'
},
{
dateStart: "2020-02-13 12:00:01",
name: 'Server2'
},
{
dateStart: "2020-02-13 11:00:01",
name: 'Server2'
},
{
dateStart: "2020-02-12 11:00:01",
name: 'Server2'
}],
data3 = [ {
dateStart: "2020-02-13 14:00:01",
name: 'Server3'
},
{
dateStart: "2020-02-13 13:12:01",
name: 'Server3'
},
{
dateStart: "2020-02-13 12:00:01",
name: 'Server3'
},
{
dateStart: "2020-02-13 11:00:01",
name: 'Server3'
},
{
dateStart: "2020-02-12 10:00:01",
name: 'Server3'
}]
utdata bör vara.
[{
dateStart: "2020-02-13 14:00:01",
name: 'Server1'
},
{
dateStart: "2020-02-13 13:00:01",
name: 'Server1'
},
{
dateStart: "2020-02-13 12:00:01",
name: 'Server1'
}],
[ {
dateStart: "2020-02-13 14:00:01",
name: 'Server2'
},
{
dateStart: "2020-02-13 13:00:01",
name: 'Server2'
},
{
dateStart: "2020-02-13 12:00:01",
name: 'Server2'
}],
[ {
dateStart: "2020-02-13 14:00:01",
name: 'Server3'
},
{
dateStart: "2020-02-13 13:12:01",
name: 'Server3'
},
{
dateStart: "2020-02-13 12:00:01",
name: 'Server3'
},
{
dateStart: "2020-02-13 11:00:01",
name: 'Server3'
},
{
dateStart: "2020-02-12 10:00:01",
name: 'Server3'
}]
Svar #1
Jag kommer att lägga upp lösningen på det här sättet -
- Innan du slår ihop arrayerna, sortera dem om de inte är sorterade (fallande ordning). Använd
array.sort()för det. - För sammanslagning, lägg den första arrayen
data1i en ny array och spara den sista posten för denna array i en temporär variabel.let temp=data1[data1.length -1].dateStart. Eftersom du inte behöver data från andra arrayer som är äldre än detta datum. - Iterera över de återstående arrayerna
data2, data3, ...och lägg till datan i en ny array omdateStartinte är äldre äntemp.
Svar #2
om du vill spara dina data på det här sättet behöver du bara använda spridningsoperatorn (...) på detta sätt:
const data1 = [
{
dateStart: "2020-02-14 00:00:01",
name: 'Server1'
},
{
dateStart: "2020-02-13 14:00:01",
name: 'Server1'
},
{
dateStart: "2020-02-13 13:00:01",
name: 'Server1'
},
{
dateStart: "2020-02-13 12:00:01",
name: 'Server1'
},
{
dateStart: "2020-02-13 11:00:01",
name: 'Server1'
}
];
const data2 = [
{
dateStart: "2020-02-13 14:00:01",
name: 'Server2'
},
{
dateStart: "2020-02-13 13:00:01",
name: 'Server2'
},
{
dateStart: "2020-02-13 12:00:01",
name: 'Server2'
},
{
dateStart: "2020-02-13 11:00:01",
name: 'Server2'
},
{
dateStart: "2020-02-12 11:00:01",
name: 'Server2'
},
{
dateStart: "2020-02-11 11:00:01",
name: 'Server2'
},
]
let final = [[...data1] , [...data2] , ... more arrays];
och utdata är :
[ [ { dateStart: '2020-02-14 00:00:01', name: 'Server1' },
{ dateStart: '2020-02-13 14:00:01', name: 'Server1' },
{ dateStart: '2020-02-13 13:00:01', name: 'Server1' },
{ dateStart: '2020-02-13 12:00:01', name: 'Server1' },
{ dateStart: '2020-02-13 11:00:01', name: 'Server1' } ],
[ { dateStart: '2020-02-13 14:00:01', name: 'Server2' },
{ dateStart: '2020-02-13 13:00:01', name: 'Server2' },
{ dateStart: '2020-02-13 12:00:01', name: 'Server2' },
{ dateStart: '2020-02-13 11:00:01', name: 'Server2' },
{ dateStart: '2020-02-12 11:00:01', name: 'Server2' },
{ dateStart: '2020-02-11 11:00:01', name: 'Server2' } ] ]
