javascript - 如何优化我的代码中的条件语句
问题描述
我有一个名为的 2D 数组extraRank
,它包含其他名为userA、userB、userC和userD的用户数组,每当我将它们推入其中时:
// users arrays:
userA = ["Sara Ree",18, "Doctor", "441", "31"];
userB = ["Marry",18, "Nurse", "41", "1"];
userC = ["John Doe",18, "Woker", "21", "31"];
userD = ["Alex Morph",18, "Musisian", "81", "51"];
// users arrays may be pushed to this array
let extraRank = [];
我想要的是一种有效的方法:
首先,检查哪些用户数组存在于extraRank
.
那么如果例如,userA存在,请执行以下操作:
如果extraRank.indexOf(userA) == 0
然后分配userA_Index = 10;
如果extraRank.indexOf(userA) == 1
然后分配userA_Index = 9;
如果extraRank.indexOf(userA) == 2
然后分配userA_Index = 8;
如果extraRank.indexOf(userA) == 3
然后分配userA_Index = 7;
我知道一种方法是为每个用户使用 if 语句,但我想知道是否有更有效的方法来做到这一点......
解决方案
如果分配是线性的,如您的示例所建议的,您可以做一个简单的减法:
userA_index = 10 - extraRank.indexOf(userA)
如果比较复杂,可以创建一个将索引连接到结果的map对象,比如:
const mapIndexToOutput = {
0: 10,
1: 9,
2: 8,
3: 7,
...
}
userA_index = mapIndexToOutput[extraRank.indexOf(userA)]
推荐阅读
- django - 同一模型中的用户外键在 sql 数据库中一起更新
- azure - 如何使用 Azure Functions 或 Azure Logic App 在 Azure 虚拟机中运行 Powershell 脚本?
- node.js - puppeteer:chrome 由自动化测试软件控制
- java - ObjectNode 对象读取列表值
- angular - Angular 2:如何从指令调用函数到组件?
- c++ - 有什么方法可以改进`std::getline`?
- r - dplyr::arrange() 中的 base::ifelse() 用于分组行的条件排列
- reactjs - Reactjs 使用来自 API 调用的数据优化自动完成材料 ui
- javascript - Uncaught (in promise) TypeError: _this.settings is not a function - 使用 barba.js 和 three.js
- asp.net - 事件代码:4009 Viewstate 验证失败。原因:3