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

118
Views
filter array based on another nested array

In the code below, I apply filter on array based on other arrays. For example : Filter data array based on property names from cols and values from values array.

const
    data = [{ name: "Tiger Nixon", position: "Accountant", salary: 10800, start_date: "2011\\/04\\/25", office: "Edinburgh", rating: 5421 }, { name: "Garrett Winters", position: "Accountant", salary: 170750, start_date: "2011\\/07\\/25", office: "Tokyo", rating: 8422 }, { name: "Garrett Winters", position: "Analyst", salary: 170750, start_date: "2011\\/07\\/25", office: "Tokyo", rating: 8422 }, { name: "Ashton Cox", position: "Junior Technical Author", salary: 86000, start_date: "2009\\/01\\/12", office: "San Francisco", rating: 1562 }, { name: "Cedric Kelly", position: "Senior Javascript Developer", salary: 433060, start_date: "2012\\/03\\/29", office: "Edinburgh", rating: 6224 }],
    cols = ['name', 'position'],
    values = ['Garrett Winters', 'Accountant'],
    result = data.filter(o => cols.every((k, i) => o[k] === values[i]));
    
    console.log(result);

The above code is working fine. But if I have nested array for numeric in values (see below). I want to accommodate this condition salary >= nestedarray[0] && salary <= nestedarray[1]

cols = ['salary', 'position']
values = [[50000,500000], 'Accountant']

I tried this but not working -

result = data.filter(o => cols.every((k, i) => if(Array.isArray(values[i]) {o[k] >= values[i][0] && o[k] <= values[i][1] } else {o[k] === values[i]}))
about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

You have to use the ternary operator to perform a conditional in an expression, not if.

result = data.filter(o => cols.every((k, i) => 
    Array.isArray(values[i]) ? 
        o[k] >= values[i][0] && o[k] <= values[i][1] :
        o[k] === values[i]
    ));
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!