Reputation: 5522
I'm trying to optimize my code or see if there's a better way to do it. Given values for acctData and balances below, I need to return an array of accounts filtered by the user name. my code works
const acctData = [{
acctNum: "AAA - 1234",
user: "Alice"
},
{
acctNum: "AAA - 5231",
user: "Bob"
},
{
acctNum: "AAA - 9921",
user: "Alice"
},
{
acctNum: "AAA - 8191",
user: "Alice"
}
];
const balance = {
"AAA - 1234": 4593.22,
"AAA - 9921": 0,
"AAA - 5231": 232142.5,
"AAA - 8191": 4344
};
const combinedAccBalance = JSON.parse(JSON.stringify(acctData));
const getAccountNumbers = (filterByUser) => {
return combinedAccBalance
.filter(acc => {
acc.balance = balance[acc.acctNum];
return acc.user === filterByUser;
})
.sort((a, b) => {
return a.balance - b.balance;
})
.map(fa => {
return fa.acctNum;
});
};
console.log(getAccountNumbers("Alice"));
//Returns ["AAA - 9921", "AAA - 8191", "AAA - 1234"]
Upvotes: 1
Views: 305
Reputation: 5466
you can just skip the deep clone part and do something like this:
const acctData = [{
acctNum: "AAA - 1234",
user: "Alice"
},
{
acctNum: "AAA - 5231",
user: "Bob"
},
{
acctNum: "AAA - 9921",
user: "Alice"
},
{
acctNum: "AAA - 8191",
user: "Alice"
}
];
const balance = {
"AAA - 1234": 4593.22,
"AAA - 9921": 0,
"AAA - 5231": 232142.5,
"AAA - 8191": 4344
};
let getAccountNumbers = (filterByUser) => {
return acctData
.filter(acc => acc.user === filterByUser)
.sort((a, b) => {
return balance[a.acctNum] - balance[b.acctNum];
})
.map(fa => {
return fa.acctNum;
});
};
console.log(getAccountNumbers("Alice"));
//Returns ["AAA - 9921", "AAA - 8191", "AAA - 1234"]
Upvotes: 3