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
    – Wyck
    CommentedJul 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
    – Bowis
    CommentedJul 14, 2021 at 15:19
  • 1
    Are you looking for computed property names ? this.products.sort((a, b) => parseFloat(b[filterType]) - parseFloat(a[filterType]));CommentedJul 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?

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

      Start asking to get answers

      Find the answer to your question by asking.

      Ask question

      Explore related questions

      See similar questions with these tags.