我有這個物件陣列:
0: {time: '2021-12-02T23:53:54.062Z', value: 558316}
1: {time: '2021-12-03T00:53:53.959Z', value: 558452}
2: {time: '2021-12-03T01:53:53.934Z', value: 558588}
3: {time: '2021-12-05T23:53:48.617Z', value: 568039}
4: {time: '2021-12-06T00:53:48.609Z', value: 568174}
5: {time: '2021-12-06T01:53:48.545Z', value: 568309}
6: {time: '2021-12-06T02:53:48.480Z', value: 568444}
7: {time: '2021-12-06T03:53:48.393Z', value: 568579}
問題是如何獲得每小時值的差異,例如從 1 得到的值:558452 減去從 0 得到的值:558316 等于 136。但是如果當前值和前一個值不在一個小時內,則不要減去,例如來自 3 的值:568039減去 2 的值:558588,3 的值與 2 的值相差一個多小時。因此不應減去這兩個值,因為它會在圖中得到高值(9,451)。
預期結果:
{time: '2021-12-03T00:53:53.959Z', value: 136}
{time: '2021-12-03T01:53:53.934Z', value: 136}
{time: '2021-12-06T00:53:48.609Z', value: 135}
{time: '2021-12-06T01:53:48.545Z', value: 135}
{time: '2021-12-06T02:53:48.480Z', value: 135}
{time: '2021-12-06T03:53:48.393Z', value: 135}
uj5u.com熱心網友回復:
您可以使用 map 來計算差異,然后根據此進行過濾。
例如。
var data = [
{time: '2021-12-02T23:53:54.062Z', value: 558316},
{time: '2021-12-03T00:53:53.959Z', value: 558452},
{time: '2021-12-03T01:53:53.934Z', value: 558588},
{time: '2021-12-05T23:53:48.617Z', value: 568039},
{time: '2021-12-06T00:53:48.609Z', value: 568174},
{time: '2021-12-06T01:53:48.545Z', value: 568309},
{time: '2021-12-06T02:53:48.480Z', value: 568444},
{time: '2021-12-06T03:53:48.393Z', value: 568579},
].map(d => (d.time = new Date(d.time), d));
const oneHour = 1000 * 60 * 60;
const temp = data.map((m, ix, a) => {
if (ix > 0) {
m.diff = a[ix].time - a[ix -1].time;
m.value2 = a[ix].value - a[ix -1].value;
} else {
//make first one filter out as
//there is no previous
m.diff = oneHour 1;
}
return m;
})
.filter(m => m.diff < oneHour)
.map(m => ({
time: m.time,
value: m.value2
}));
console.log(temp);
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/382561.html
標籤:javascript 数组 有角的 约会时间 不同之处
上一篇:更改偏移量而不更改本地時間
