Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

111
Views
Find the best match in an array

I have got the following array:

let x = [
  { name: "Bad", value: 2 },
  { name: "Critical", value: 1 },
  { name: "High", value: 5 },
  { name: "Medium", value: 5 },
];

The expectation is to look for "Critical" first, if the array has it, return that, else look for "High" then look for "Medium" and so on.

about 4 years ago · Juan Pablo Isaza
3 answers
Answer question

0

You can store the priorities in an array and then loop over the array and for every priority check if there's an object and whenever an object is found, return it. If the entire priorities array is exhausted then return null (or whatever you want).

const arr = [
    { name: "Bad", value: 2 },
    { name: "Critical", value: 1 },
    { name: "High", value: 5 },
    { name: "Medium", value: 5 },
  ],
  priorities = ["Critical", "High", "Medium", "Bad"],
  search = (arr, priorities) => {
    for (let p of priorities) {
      const obj = arr.find(({ name }) => name === p);
      if (obj) {
        return obj;
      }
    }
    return null;
  };

console.log(search(arr, priorities));

You can also sort the array based on the priority.

  • Create a Map that stores the priorities.
  • Sort arr based on the priorities stored in the map.

const arr = [
    { name: "Bad", value: 2 },
    { name: "Critical", value: 1 },
    { name: "High", value: 5 },
    { name: "Medium", value: 5 },
  ],
  priorities = new Map([
    ["Critical", 4],
    ["High", 3],
    ["Medium", 2],
    ["Bad", 1],
  ]),
  sortedArr = [...arr].sort(
    (a, b) => priorities.get(b.name) - priorities.get(a.name)
  );

console.log(sortedArr);

about 4 years ago · Juan Pablo Isaza Report

0

This will iterate over the array once until it finds the highest value and break the loop once it finds that value. Maximum number of iterations is N where N is x.length;

let x = [{name: 'Bad',value: 2},
{name: 'Critical', value: 1},
{name: 'High', value: 5},
{name: 'Medium', value: 5}]

function findVal(arr) {
  let returnVal = null;
  for (let i = 0; i < arr.length && returnVal === null; i++) {
    switch (arr[i].name) {
      case 'Critical':
        returnVal = arr[i];
        break;
      case 'High':
        returnVal = arr[i];
        break;
      case 'Medium':
        returnVal = arr[i];
        break;
      case 'Low':
        returnVal = arr[i];
        break;
      default:
        break;
    }
  }
  return returnVal;
}

findVal(x);

Note: It would be far simpler to designate a numerical value to the array values so that you could determine the severity simply by using the highest/lowest value rather than string matching

about 4 years ago · Juan Pablo Isaza Report

0

let value = x.find(x => x.name == "Critical") 
  || x.find(x => x.name == "High")
  || x.find(x => x.name == "Medium") ...
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!