Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

filter array based on another arrays dynamically

I am new to JS. I want to apply filter on array based on other arrays. For example : Filter data array based on property names from colNames and values from Values array. The colNames and Values arrays can have any length (not always 2).

var data = [{
      "name": "Tiger Nixon",
      "position": "System Architect",
      "salary": "320800",
      "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"
    }
  ]
  
  var colNames = ['name', 'position']
  var Values = ['Garrett Winters', 'Accountant']

Expected Outcome

   [{
      "name": "Garrett Winters",
      "position": "Accountant",
      "salary": "170750",
      "start_date": "2011\/07\/25",
      "office": "Tokyo",
      "rating": "8422"
    }]

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

>Solution :

You could filter with the iteration of all keys and check with the values.

const
    data = [{ name: "Tiger Nixon", position: "System Architect", salary: "320800", 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);
.as-console-wrapper { max-height: 100% !important; top: 0; }
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading