我如何优化以下JavaScript函数

问题描述 投票:1回答:1

我正在尝试优化我的代码,或者看看是否有更好的方法。给定下面的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"]
javascript
1个回答
2
投票

您可以跳过深层克隆部分并执行以下操作:

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"]
© www.soinside.com 2019 - 2024. All rights reserved.