我正在尝试优化我的代码,或者看看是否有更好的方法。给定下面的acctData和balance值,我需要返回一个按用户名过滤的帐户数组。 我的代码有效
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"]
您可以跳过深层克隆部分并执行以下操作:
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;
});
};
getAccountNumbers("Alice");
//Returns
["AAA - 9921", "AAA - 8191", "AAA - 1234"]