1

I have the following array of objects:

   [
     {
       "id" : 1,
       "pricePerDay" : 50,
     }, 
     {
       "id" : 2,
       "pricePerDay" : 70   
     }
   ]

Based on the user input from a i want to filter either ASC or DESC on the pricePerday. Obviously this would work with:

 this.products.sort((a, b) => parseFloat(b.pricePerDay) - parseFloat(a.pricePerDay));

BUT i have the variable filterType which now contains the string 'pricePerDay'. How can I use this variable to search the array of objects to properties that have the same key and sort this array based on that key?

3
  • 1
    Does this answer your question? Sort array of objects by string property value Commented Jul 14, 2021 at 15:18
  • @Wyck no, because in that example you know the key of the object property, in my case I need to search for this key based on the user input, which is the filterType variable Commented Jul 14, 2021 at 15:19
  • 1
    Are you looking for computed property names ? this.products.sort((a, b) => parseFloat(b[filterType]) - parseFloat(a[filterType])); Commented Jul 14, 2021 at 15:21

2 Answers 2

3
this.products.sort((a, b) => parseFloat(b[filterType]) - parseFloat(a[filterType]));

Does this answer your question?

Sign up to request clarification or add additional context in comments.

Comments

1

You can change filterType to field that you want and acs to false if you want desc order

 const arr = [
     {
       "id" : 1,
       "pricePerDay" : 50,
           
     }, 
     {
       "id" : 2,
       "pricePerDay" : 70   
     }
   ]

 let filterType = 'pricePerDay'
 let asc = false

 const res = arr.sort((a, b) => {
  if (asc) {
    return parseFloat(a[filterType]) - parseFloat(b[filterType])
  } else {
    return parseFloat(b[filterType]) - parseFloat(a[filterType])
  }
 });
 console.log(res)

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.