Reputation: 632
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?
Upvotes: 1
Views: 233
Reputation: 23480
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)
Upvotes: 1
Reputation: 3091
this.products.sort((a, b) => parseFloat(b[filterType]) - parseFloat(a[filterType]));
Does this answer your question?
Upvotes: 3