Как проверить элемент массива больше указанного c значения - PullRequest
0 голосов
/ 25 февраля 2020

У меня есть следующий массив, и мне нужно проверить, является ли массив любым AvgWT значением

  1. больше 15000 и меньше 20000, тогда возвращаемое значение 50
  2. больше чем 10000 и меньше 15000, то возвращаемое значение 100
  3. больше 5000 и меньше 10000, затем возвращаемое значение 150

Я попробовал следующий код.

var arry = [{"TimeSlot":"8:00 am","AssistedC":0,"Abandons":0,"AvgWT":12152},{"TimeSlot":"8:15 am","AssistedC":0,"Abandons":0,"AvgWT":13942},{"TimeSlot":"8:30 am","AssistedC":0,"Abandons":0,"AvgWT":0},{"TimeSlot":"8:45 am","AssistedC":0,"Abandons":0,"AvgWT":0},{"TimeSlot":"9:00 am","AssistedC":0,"Abandons":0,"AvgWT":0},{"TimeSlot":"9:15 am","AssistedC":0,"Abandons":0,"AvgWT":0},{"TimeSlot":"6:30 pm","AssistedC":0,"Abandons":0,"AvgWT":0},{"TimeSlot":"6:45 pm","AssistedC":0,"Abandons":0,"AvgWT":0},{"TimeSlot":"7:00 pm","AssistedC":0,"Abandons":0,"AvgWT":0}];

function isArrayValueGreater(arry) {
   // var first = array[0];
    var first = arry[0]["AvgWaitTime"];
    return arry.every(function(element) {
        if(element["AvgWaitTime"]> 15000 &&  element["AvgWaitTime"]< 20000){
            return 50;
        }else if(element["AvgWaitTime"]> 10000 && element["AvgWaitTime"]<15000){
            return 100;
        }
    });
}

isValuesSameG = isArrayValueGreater(arry);

Но он не работает должным образом, что я тут не так сделал?

Ответы [ 2 ]

1 голос
/ 25 февраля 2020

Если я вас правильно понял, вы можете использовать метод .map (). Он вернет новый массив с той же длиной, включая проверку соответствия и результаты. Вот код

const arry = [{"TimeSlot":"8:00 am","AssistedC":0,"Abandons":0,"AvgWT":12152},{"TimeSlot":"8:15 am","AssistedC":0,"Abandons":0,"AvgWT":13942},{"TimeSlot":"8:30 am","AssistedC":0,"Abandons":0,"AvgWT":0},{"TimeSlot":"8:45 am","AssistedC":0,"Abandons":0,"AvgWT":0},{"TimeSlot":"9:00 am","AssistedC":0,"Abandons":0,"AvgWT":0},{"TimeSlot":"9:15 am","AssistedC":0,"Abandons":0,"AvgWT":0},{"TimeSlot":"6:30 pm","AssistedC":0,"Abandons":0,"AvgWT":0},{"TimeSlot":"6:45 pm","AssistedC":0,"Abandons":0,"AvgWT":0},{"TimeSlot":"7:00 pm","AssistedC":0,"Abandons":0,"AvgWT":0}];

function checkIfMatchCondition({ AvgWT: value }) {
  if(value < 20000 && value > 15000)
    return 50
  else if(value < 15000 && value > 10000)
    return 100
  else if(value < 10000 && value > 5000)
    return 150
  return 0
}

const res = arry.map(checkIfMatchCondition);
console.log(res)

это может быть улучшено включением индекса или всего объекта с дополнительным свойством, но с недостаточным количеством деталей в исходном сообщении.

0 голосов
/ 25 февраля 2020

Вы можете использовать for l oop.

Попробуйте запустить приведенный ниже фрагмент кода, чтобы увидеть, соответствует ли результат вашим ожиданиям, потому что я сделал несколько предположений, которые не совсем ясны из вашего вопроса:

  1. Сделал Вы хотите вернуть одно значение или целый массив? Мой код возвращает массив той же длины, что и arry, с сохраненными в нем выходными значениями.

  2. Что вы хотите, чтобы он возвращал, когда AvgWT находился за пределами диапазонов, которые вы заявил? Мой код возвращает 0 для них.

Я был бы рад изменить код, если я что-то неправильно понял!

function isArrayValueGreater(arry) {

  var returnValue = [];

  for (var i = 0; i < arry.length; i++) {
    var element = arry[i]["AvgWT"];

    if (15000 < element && element < 20000) {
      returnValue.push(50);
    } else if (10000 < element && element < 15000) {
      returnValue.push(100);
    } else if (5000 < element && element < 10000) {
      returnValue.push(150);
    } else {
      returnValue.push(0);
    }
  }

  return returnValue;
}



var arry = [{
  "TimeSlot": "8:00 am",
  "AssistedC": 0,
  "Abandons": 0,
  "AvgWT": 12152
}, {
  "TimeSlot": "8:15 am",
  "AssistedC": 0,
  "Abandons": 0,
  "AvgWT": 13942
}, {
  "TimeSlot": "8:30 am",
  "AssistedC": 0,
  "Abandons": 0,
  "AvgWT": 0
}, {
  "TimeSlot": "8:45 am",
  "AssistedC": 0,
  "Abandons": 0,
  "AvgWT": 0
}, {
  "TimeSlot": "9:00 am",
  "AssistedC": 0,
  "Abandons": 0,
  "AvgWT": 0
}, {
  "TimeSlot": "9:15 am",
  "AssistedC": 0,
  "Abandons": 0,
  "AvgWT": 0
}, {
  "TimeSlot": "6:30 pm",
  "AssistedC": 0,
  "Abandons": 0,
  "AvgWT": 0
}, {
  "TimeSlot": "6:45 pm",
  "AssistedC": 0,
  "Abandons": 0,
  "AvgWT": 0
}, {
  "TimeSlot": "7:00 pm",
  "AssistedC": 0,
  "Abandons": 0,
  "AvgWT": 0
}];

console.log(isArrayValueGreater(arry))
...