Отсутствует условие - PullRequest
0 голосов
/ 18 января 2019

у меня 3 условия:

  • , если большинство Average равно 200, отобразить «вверх» в массив

  • , если большинство среднего значения отличается от 200, отобразите «вниз» в массив и возьмите первую метку времени, где среднее значение отличается от 200.

И я не знаю, как я могу сделать последнее:

  • мы снова скомпилируем скрипт, если раньше у меня было «down», а теперь большинство составляет 200 («up»), мы должны сохранить временную метку и не ставить ее в ноль.

Можете ли вы помочь мне, пожалуйста:)

getAllMetrics(regions).then(res => {
console.log(res);
/*
[[{Timestamp: 2019-01-15T08:26:00.000Z, Average: 200},
{Timestamp: 2019-01-15T08:32:00.000Z, Average: 200},
{Timestamp: 2019-01-15T08:26:00.000, Average: 200},
{Timestamp: 2019-01-15T08:29:00.000Z, Average: 200},
{Timestamp: 2019-01-15T08:35:00.000Z, Average: 200}],
[{Timestamp: 2019-01-15T08:26:00.000Z, Average: 400},
{Timestamp: 2019-01-15T08:32:00.000Z, Average: 400},
{Timestamp: 2019-01-15T08:26:00.000, Average: 400},
{Timestamp: 2019-01-15T08:29:00.000Z, Average: 200},
{Timestamp: 2019-01-15T08:35:00.000Z, Average: 200}]] */

/*    SECOND COMPILATION 
[[{Timestamp: 2019-01-15T08:26:00.000Z, Average: 200},
{Timestamp: 2019-01-15T08:32:00.000Z, Average: 200},
{Timestamp: 2019-01-15T08:26:00.000, Average: 200},
{Timestamp: 2019-01-15T08:29:00.000Z, Average: 200},
{Timestamp: 2019-01-15T08:35:00.000Z, Average: 200}],
[{Timestamp: 2019-01-15T08:26:00.000Z, Average: 400},
{Timestamp: 2019-01-15T08:32:00.000Z, Average: 200},
{Timestamp: 2019-01-15T08:26:00.000, Average: 200},
{Timestamp: 2019-01-15T08:29:00.000Z, Average: 200},
{Timestamp: 2019-01-15T08:35:00.000Z, Average: 200}]] */
tabRES = [];
//Loop regions
var i = -1;
TsTAB = [null, null, null];

var a=-1;
while( tabReg[++a] ){
    TsTAB.push( null );
}
while (res[++i]) {
    Avg = {
    up: 0,
    down: 0
    };
    Ts = "";
    RespARRAY = res[i];
    var j = -1;
    while (RespARRAY[++j]) {
    if (RespARRAY[j].Average == 200) {
        Avg.up++ // IF 200 -> UP
        //and push array TS
    } else {
        Avg.down++ // -> DOWN
        //Retrieve the last 
        Ts = Ts || RespARRAY[j].Timestamp;
    }
    }
    if (Avg.up > Avg.down) {
    tabRES.push('up');
    } else {
    tabRES.push('down');
    TsTAB[i] = TsTAB[i] || Ts;
    }
}
console.log(tabRES);
console.log(TsTAB);
}).catch(err => {
console.log(err);
}); 

Фактический результат (первое и второе условие):

  • ['вверх', 'вниз']
  • [null, 3 дня назад]

Ожидаемый результат (последнее условие) (/! \ Значение среднего изменения для второго региона)

  • [ 'до', 'до']
  • [null, 3 дня назад]

1 Ответ

0 голосов
/ 18 января 2019

var res =  [[{Timestamp: "2019-01-15T08:26:00.000Z", Average: 200},
{Timestamp: "2019-01-15T08:32:00.000Z", Average: 200},
{Timestamp: "2019-01-15T08:26:00.000", Average: 200},
{Timestamp: "2019-01-15T08:29:00.000Z", Average: 200},
{Timestamp: "2019-01-15T08:35:00.000Z", Average: 200}],
[{Timestamp: "2019-01-15T08:26:00.000Z", Average: 400},
{Timestamp: "2019-01-15T08:32:00.000Z", Average: 400},
{Timestamp: "2019-01-15T08:26:00.000Z", Average: 400},
{Timestamp: "2019-01-15T08:29:00.000Z", Average: 200},
{Timestamp: "2019-01-15T08:35:00.000Z", Average: 200}]];

/*    SECOND COMPILATION 
[[{Timestamp: 2019-01-15T08:26:00.000Z, Average: 200},
{Timestamp: 2019-01-15T08:32:00.000Z, Average: 200},
{Timestamp: 2019-01-15T08:26:00.000, Average: 200},
{Timestamp: 2019-01-15T08:29:00.000Z, Average: 200},
{Timestamp: 2019-01-15T08:35:00.000Z, Average: 200}],
[{Timestamp: 2019-01-15T08:26:00.000Z, Average: 400},
{Timestamp: 2019-01-15T08:32:00.000Z, Average: 200},
{Timestamp: 2019-01-15T08:26:00.000, Average: 200},
{Timestamp: 2019-01-15T08:29:00.000Z, Average: 200},
{Timestamp: 2019-01-15T08:35:00.000Z, Average: 200}]] */

let results = res.reduce((acc,resArray) => {
                innerResult = resArray.reduce((_acc,obj) => {
                   if(obj.Average == 200) {
                      _acc.up++;
                   } else {
                      _acc.down++;
                      _acc.time = obj.Timestamp;
                   }
                   return _acc;
                }, { up:0, down:0, time:null });
                
                if(innerResult.up > innerResult.down) {
                  acc.res.push('up');
                  acc.ts.push(null);
                }
                else {
                  acc.res.push('down');
                  acc.ts.push(innerResult.time);
                }
                return acc;
              }, {res:[], ts:[]});
console.log(results.res);
console.log(results.ts);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...