gpt4 book ai didi

javascript - 如何根据 JavaScript 中的条件返回字符串的不同变体?

转载 作者:行者123 更新时间:2023-12-01 02:22:17 26 4
gpt4 key购买 nike

我想根据条件返回不同的字符串。我有 3 个问题的形式,每个问题都有 4 个选项可供选择(单选),每个选项都有一个值。它看起来像这样:

Question                 Possible Answers          Value
-----------------------------------------------------------
1-25 0
26-40 5
question 1 41-60 8
60+ 10
-----------------------------------------------------------
1-25 0
26-40 5
question 2 41-60 10
60+ 10
-----------------------------------------------------------
1-25 0
26-40 5
question 3 41-60 10
60+ 15
-----------------------------------------------------------

我有每个问题的值,现在如果值的总和大于 25,我想返回自定义字符串。如果问题的值大于或等于 10,我想在字符串中显示。

例如:用户为问题 1 选择选项 2(值 = 5),为问题 2 选择选项 3(值 = 10),为问题 3 选择选项 4(值 = 15)

我的字符串是:最高值在问题 2 和问题 3 中。

这是我尝试过的:

if (total_Value > 25) {
switch (true) {
case (question1_Value >= 10 && question2_Value >= 10 && question3_Value < 10)
return "Highest values are in question1 and question2";
case (question1_Value >= 10 && question2_Value < 10 && question3_Value >= 10):
return "Highest values are in question1 and question3";
}
}

等等..我基本上检查了每一种可能性并相应地修改了返回结果,但这不是最好的,特别是如果我有 5 个问题。

我希望在没有巨大的 switch 语句或 if 语句的情况下做到这一点。请帮忙。我希望我的问题有意义。谢谢!

最佳答案

这是人们刚开始学习编程时的典型错误。你试图用现有的逻辑做太多事情,最终会得到一千个 if/else/else ifswitch 语句while 循环for 循环。尤其是在尝试实现经典井字游戏的新人身上会看到这种情况,但这是另一个例子。

问题不在于您想要做什么,而在于您管理数据的方式。

每个问题的值不应该存储在单独的变量中,至少在您尝试计算最高值时是如此。数据相互关联。我们需要用代码来证明这一点。执行此操作的最佳方法是将信息存储在数组中,或者存储在对象中。

您还需要考虑您正在寻找什么。您想要一个输出来指示哪些问题(大概是两个)具有最高值。这一切都很好,但这意味着我们需要以某种方式传达什么问题与什么值(value)相关。我们可以通过与您的数据一起存储的参数顺序(使用数组)或显式标签(使用对象)来确定这一点,告诉您的程序它所链接的问题是什么或将它们组合起来,如下所示。

我们使用Array.prototype.reduce来获得最高分。我们允许使用排除参数来忽略奇异值。当我们使用这个排除参数调用函数时,我们可以获得第二高的值。

我们根据数组中的索引(+1,因为索引从 0 开始)和一个值返回一个问题编号。这些被组合为返回对象的属性。这样可以轻松获取最高值和第二高值,并将它们显示在控制台或屏幕上。

var q1 = 10,
q2 = 10,
q3 = 50,
value_arr = [q1, q2, q3],
max = highest(value_arr),
max2 = highest(value_arr, max.value);

console.log("question " + max.question + " and question " + max2.question + " are the highest.");

function highest(value_array, exclude = null) {
return value_array.reduce(function(max, v, currentIndex) {
if (v > max.value && v != exclude) {
max.value = v;
max.question = currentIndex + 1
}
return max;
}, {
question: 0,
value: 0
});
};

关于javascript - 如何根据 JavaScript 中的条件返回字符串的不同变体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49114745/

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