首页 > 解决方案 > 从JS中的数组中选择匹配的值

问题描述

我正在研究 JS 中的下拉框。

这个 JS 工作得很好,但我发现一些 calc 不起作用。所以我添加了代码并尝试修复。

程序运行是... 用户选择 3 个下拉框,然后显示结果。用户将首先选择“30”或“40”或“50”。之后选择“类型”最后用户可以选择“产品”。产品列表已经由“第一和第二选择值”决定。

该程序仅在用户选择值“30”时才能完美运行

我想添加 calc CASE '40' 和 '50' 。

例如

如果用户选择

tubosuValue == 30 && u_typeValue == 'M' && productData == 920

结果将 920

如果用户选择

tubosuValue == 50 && u_typeValue == 'S' && productData == 1593

结果将是 1593

我把整个代码放在这里

我在下面写了代码,但它看起来很丑。我想不出好办法。

你能教我正确的代码吗?

JS部分

let result = document.getElementById("result");
if (tubosuValue && u_typeValue && productValue) {
    //if all value selected

    if(tubosuValue == 30 && u_typeValue == 'M' && productValue == 920) {
    hoge = 920;
    }
    if(tubosuValue == 30 && u_typeValue == 'M' && productValue == 1117) {
    hoge = 1117;
    }
    if(tubosuValue == 30 && u_typeValue == 'M' && productValue == 1180) {
    hoge = 1180;
    }
    if(tubosuValue == 40 && u_typeValue == 'M' && productValue == 1182) {
    hoge = 1182;
    if(tubosuValue == 50 && u_typeValue == 'S' && productValue == 1593) {
    hoge = 1485;

    }

    result.value = ValueUtils.comma(hoge);

更新我尝试写简单的问题

我重写很容易这是我的目标

第一个用户选择 30 或 40 或 50 值(绿色区域)

第二个用户选择 M , S ,K , AL (蓝色区域)

最后用户选择红色区域。

如果用户选择 40 和 K ,用户只能选择 p1 和 p2 值。

如果用户选择 40 和 k 和 p1 结果将是 21

如果用户选择 40 并且 K 和 p2 结果将为 22

[![在此处输入图像描述][1]][1]

标签: javascript

解决方案


这仍然不是“最好的”解决方案,因为我真的不知道你想要达到什么目标以及如何做得更好,但它的方式比 100 个 if 语句更好。

const tubosuValueArray = [30,40,50];
const productValueArray = [920, 1117, 1180, 1182];
const typeValue = 'M';
if (tubosuValueArray.includes(tubosuValue) && 
    typeValue === u_typeValue) && productValueArray.includes(productValue)) {
  hoge = productValue
} else if (tubosuValue == 50 && u_typeValue == 'S' && productValue == 1593) {
  hoge = 1485
}


推荐阅读