【问题标题】:Javascript Complex PossibilitiesJavascript 复杂的可能性
【发布时间】:2014-07-09 07:41:33
【问题描述】:

直截了当,我创建了一个表单让用户插入 2 个项目(选项名称,选项值) 插入数字是动态的如:

  **Option Name**         **Option Value**
      Color                     Red
                                Blue
                               Yellow
      Size                       L
                                 M

我需要填写用户给出的可能性表,如下所示:

 **Color**              **Size**
    Red                    L
    Red                    M
    Blue                   L
    Blue                   M ....etc

我如何编写一个 javascript 逻辑来做到这一点?最糟糕的问题是,如果用户输入 3 或 4 个选项名称,例如添加材料:棉、雪纺 性别:男、女,该怎么办?

这似乎是不可能的或很多很多的循环?我已经这样做了两个多星期了。谁能指导我通过更简单的方法?我几乎被这吓到了。

【问题讨论】:

    标签: javascript regex logic


    【解决方案1】:

    如果你使用递归函数,你只需要一个循环和一个if-else语句,不管有多少选项:

    var options = [{
        name: "Color",
        values: ["Red", "Blue"]
    }, {
        name: "Size",
        values: ["M", "L"]
    }, {
        name: "Sex",
        values: ["Male", "Female"]
    }];
    
    function list(options, result) {
        if (options.length > 0) {
            var option = options[0];
            var remaining = options.slice(1);
    
            for (var i = 0; i < option.values.length; i++) {
                var current = result.slice(0);
                current.push(option.values[i]);
    
                list(remaining, current);
            }
        } else {
            document.body.innerHTML += result.join(", ");
            document.body.innerHTML += "<br/>";
        }
    }
    
    list(options, []);
    

    小提琴可用here

    【讨论】:

    • 非常感谢 robby 的友好指导。它在小提琴中起作用。但是,当我添加更多选项时,它会挂起。可能太多的可能性。无论如何,我需要重新理解整个代码,这样我才能以表格形式生成我的 。谢谢!
    • 是的,可以对这段代码进行许多性能改进,但我只是想展示一般原则。
    猜你喜欢
    相关资源
    最近更新 更多
    热门标签