Sachith Wickramaarachchi
Sachith Wickramaarachchi

Reputation: 5862

How to check array element greater than specific value

I have the following array, and I need to check if the array any AvgWT value

  1. is greater than 15000 and less than 20000 then return 50
  2. is greater than 10000 and less than 15000 then return 100
  3. is greater than 5000 and less than 10000 then return 150

I tried following code.

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);

But its not working properly, What did I do wrong here?

Upvotes: 0

Views: 3916

Answers (2)

Run_Script
Run_Script

Reputation: 2548

You could use a for loop.

Try running the snippet below to see if the output is what you expected, because I made a few assumptions that weren't completely clear from your question:

  1. Did you want to return a single value or a whole array? My code returns an array of the same length as arry, with the output values stored in it.

  2. What did you want it to return when AvgWT was outside the ranges you stated? My code returns 0 for these.

I would be happy to amend the code if I misunderstood anything!

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))

Upvotes: 0

Max Zavodniuk
Max Zavodniuk

Reputation: 79

If I understood you correctly you can use .map() method. It will return new array with the same length includes that match checking and results. Here's the code

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)

it can be improved by including index, or the whole object with additional property, but not enough details in the original post.

Upvotes: 2

Related Questions