JSFiddle - React, Tailwind, and code Playground
by Saurabh Khemka
HTML
Sort in ascending and descending order
JavaScript
acctData = [{
"acctNum": "A1234",
"user": "Alice",
"openDate": "4/5/89"
},
{
"acctNum": "A5231",
"user": "Bob",
"openDate": "4/5/11"
},
{
"acctNum": "A9921",
"user": "Alice",
"openDate": "4/5/19"
},
{
"acctNum": "A8191",
"user": "Alice",
"openDate": "4/5/19"
}
];
balance = {
"A1234": 4593.22,
"A9921": 0,
"A5231": 232142.5,
"A8191": 4344
};
function fetchAccNos(user, sortCriteria, sortDirection) {
acctData.forEach(data => {
data.balance = balance[data.acctNum];
});
let resultArr = acctData, result = [];
if (user) {
resultArr = acctData.filter(data => {
return data.user.toLowerCase() === user.toLowerCase();
});
}
if (sortCriteria) {
let direction = (sortDirection === 'asc' || sortDirection === 'desc') ? sortDirection : 'asc';
resultArr.sort(sortBy(sortCriteria, direction));
}
for (let i = 0; i < resultArr.length; i++) {
result.push(resultArr[i].acctNum);
}
return result;
}
function sortBy(prop, dir) {
return function(a, b) {
return a[prop] == b[prop] ? 0 : (dir == 'asc' ? (a[prop] < b[prop] ? -1 : 1) : (a[prop] > b[prop] ? -1 : 1))
}
}
console.log(fetchAccNos('Bob'));
console.log(fetchAccNos('Charlie'));
console.log(fetchAccNos(null, 'acctNum'));
console.log(fetchAccNos('Alice', 'balance', 'desc'));