javascript - 使用测距选项生成零件号的最佳方法

标签 javascript algorithm recursion combinatorics

我有一个零件号,完成后看起来像这样:TCW-K1-A4-B21AA

唯一不变的是 TCW- 部分,其他所有内容都指定了部件号的选项。我的最终目标是能够将所有可能的部件号与 csv 文件中的每个配置一起使用。我的编程技能有限,所以我尝试使用以下代码解决我的 javascript 问题:

var tcwArray = [['TCW-'], 
['K', 'J', 'T', 'R', 'S', 'E'], 
['1-', '2-', '3-', '4-', '5-', '6-', '7-', '8-'], 
['A', 'B'], 
['1-', '2-', '3-', '4-', '5-', '6-', '7-', '8-', '9-'], 
['A', 'B', 'C', 'D'], 
['0', '1', '2', '3'], 
['0', '1', '2'], 
['1', 'A', 'B', 'C', 'D', 'E'], 
['A', 'B']];

function allPossibleCases(arr) {
    if (arr.length === 0) {
        return [];
    }
    else if (arr.length === 1){
        return arr[0];
    }
    else {
        var result = [];
        var allCasesOfRest = allPossibleCases(arr.slice(1)); //recur with the rest of array
        for (var c in allCasesOfRest) {
            for (var i = 0; i < arr[0].length; i++) {
                result.push(arr[0][i] + allCasesOfRest[c]);
            }
        }
        return result;
    }

}
var r=allPossibleCases(tcwArray);

这对我不起作用,很可能是由于内存限制。我的问题是是否有更好的语言让我可以快速学习?

最佳答案

只有当数字完整时才可以附加到结果(或像 Justin 提到的那样存储在文件中。)

var results = [];

function allPossibleCases(arr, number) {
    if (arr.length === 0) {
        return result.push(number);
    }
    else {
        var first = arr[0];
        var rest = arr.slice(1);
        for (var i = 0; i < first.length; i++) {
            allPossibleCases(rest, number + first[i]);
        }
    }
}

关于javascript - 使用测距选项生成零件号的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23786870/

相关文章:

c - C中的工作分配算法(do while issue)

java - 具有层次结构和多个过滤器的搜索算法

c - 代码 θ(nLogn) 的时间复杂度如何?

PHP递归遍历对象树

c++ - 程序如何打印 10 条语句?

javascript - 单击链接更改内容

javascript - 您可以使用 JavaScript 将多张图片组合成一张图片吗?

javascript - 相互递归和 JSLint - 函数在定义之前被使用

javascript - 是否可以使用 JavaScript 导入 HTML?

javascript - 参数的值是如何分配给这个函数的?