I'm new to this world of vanilla javascript. I've been trying complete some challenges but it seems like I'm unable to find the solution to a challenge.
The task is:"Sort array by object property"
function arraySorter(arr) {
return arr
.map((e) => {
return Object.values(e);
})
.filter((e, i) => {
console.log(e[1]);
return;
});
}
console.log(
arraySorter([
{ a: 1, b: 2 },
{ a: 5, b: 4 },
])
);
Expected output
//expected output: [{a:1,b:2},{a:5,b:4}]
// expected output: [{a:5,b:4},{a:2,b:10}]
To sort with numbers.
as sort function should return
function arraySorter(arr) {
return arr.sort((x, y) => x.b - y.b)
}
console.log(arraySorter([{a:1,b:2},{a:5,b:4}])) //expected output: [{a:1,b:2},{a:5,b:4}]
console.log(arraySorter([{a:2,b:10},{a:5,b:4}])) //Expected output: [{a:5,b:4},{a:2,b:10}]
console.log(arraySorter([{a:1,b:7},{a:2,b:1}])) //Expected output: [{a:2,b:1},{a:1,b:7}]
You can use the sort method available on arrays.
You can also make your sort function more generic by accepting the key according to which the objects need to sorted and the order for sorting.
function sortArrayOfObjects(arr, sortKey, isAscending = true) {
return [...arr].sort(({ [sortKey]: a }, { [sortKey]: b }) =>
isAscending ? a - b : b - a
);
}
console.log(sortArrayOfObjects([{ a: 5, b: 2 }, { a: 1, b: 4 }], "a"));
console.log(sortArrayOfObjects([{ a: 2, b: 10 }, { a: 5, b: 4 }], "b"));
console.log(sortArrayOfObjects([{ a: 1, b: 7 }, { a: 2, b: 1 }], "a", false));