gpt4 book ai didi

javascript - 有什么方法可以简化带有 < in 条件的长 if else 语句?

转载 作者:行者123 更新时间:2023-11-30 08:02:04 25 4
gpt4 key购买 nike

我有以下部分代码,我不太喜欢:

if (a < 2){
b = 'somethingX';
} else if (a < 4){
b = 'somethingY';
} else if (a < 6){
....;
} else {
b = 'somethingZ';
}

我有大约 20 个这样的 if else 语句,它们全部由 (a < SomeNumber) 组成状况。我分配给 b 的结果can 不是 a 的函数和 a < someNumber不是固定间隔。我想简化它们,但无法想出一个合适的解决方案。

如果我有 (a === SomeNumber)我可以通过创建一个对象并从该对象访问值(similar to this)轻松地做到这一点,但这里我有 < 符号。有什么办法吗?

P.S. 请不要建议将此更改为 switch。我想让它更容易阅读,并根据我的主观意见阅读switchif else处于同一级别.

P.S.2 人们问这个逻辑的原因。基本上我有一个瘦客户端,它返回错误消息的代码。他们以某种特定的方式分组。例如,从 1 到 8 的所有内容都是因为用户存在问题。从 9 到 21 因为 key 不正确。有时我不需要通知用户确切的消息,所以由于分组我可以只告诉一般消息。为什么我的服务器不发送消息?它尽可能细,所以发送 7 比大字符串更好。

最佳答案

处理它的最佳方法是使用包含步骤和关联值的数组。您还需要一个默认值:

var default = 'aValue';
var steps = [2, 'something', 6, 'anotherThing', 8, 'this', 10, 'that', ... ];

然后定义一个使用这个数组的函数

function findSmallestMatch(val, default, steps) {
for (var i=0; i<steps.length; i+=2) if (val<steps[i]) return steps[i+1];
return default;
}

使用它:

var res = findSmallestMatch ( 5, default, steps );  // returns 'anotherThing

编辑: 如果你知道你的输入是一个“合理”范围内的正整数,你可以预填具有以下值的 map :

var default = 'aValue';
var steps = [2, 'something', 6, 'anotherThing', 8, 'this', 10, 'that', ... ];
var matchMap = [];
for (var i=0; i<maximumValue; i+=1)
matchMap[i] = findSmallestMatch(i, default, steps);

稍后您可以简单地使用 with :

var res = matchMap[value];

关于javascript - 有什么方法可以简化带有 < in 条件的长 if else 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25401872/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com