javascript - 在 jquery 中组合两个具有增量值的字符串

标签 javascript jquery

我需要增加字母,我需要用组合来匹配字母。

var allArrays = new Array(['a','c'],['b','e'],['r','s']);

function getPermutation(array, prefix) {
    prefix = prefix || '';
    if (!array.length) {
        return prefix;
    }

    var result = array[0].reduce(function (result, value) {
        return result.concat(getPermutation(array.slice(1), prefix + value));
    }, []);
    return result;
}

console.log(getPermutation(allArrays));

其中 ['a','c']

a, b, r ---> 从位置

c, e, s ---> 到位置

其余数组同样如此。

我需要得到输出

"abr","abs","acr","acs","adr","ads","aer","aes","bbr","bbs","bcr","bcs","bdr","bds","ber","bes","cbr","cbs","ccr","ccs","cdr","cds","cer","ces"

但是我得到的输出是这样的,

"abr","abs","aer","aes","cbr","cbs","cer","ces"

我只得到它们之间的组合,但我正在尝试增加给定的字母并且必须进行组合。

最佳答案

您可以先填补空白,然后应用 getPermutation

function getPermutation(array, prefix) {
    prefix = prefix || '';
    if (!array.length) {
        return prefix;
    }

    var result = array[0].reduce(function (result, value) {
        return result.concat(getPermutation(array.slice(1), prefix + value));
    }, []);
    return result;
}

var allArrays = new Array(['a', 'c'], ['b', 'e'], ['r', 's']);

allArrays.forEach(function (a) {
    var value = parseInt(a[0], 36) + 1,
        last = a.pop(),
        lastValue = parseInt(last, 36);
  
    while (value <= lastValue) {
        a.push(value.toString(36));
        value++;
    }
});

console.log(allArrays);
console.log(getPermutation(allArrays));
.as-console-wrapper { max-height: 100% !important; top: 0; }

字母和任何数字的解决方案,不管顺序如何,检查类型并使用变量来递增/递减值。

function getPermutation(array, prefix) {
    prefix = prefix || '';
    if (!array.length) {
        return prefix;
    }

    return array[0].reduce(function (result, value) {
        return result.concat(getPermutation(array.slice(1), prefix + value));
    }, []);
}

var allArrays = new Array(['a', 'c'], ['e', 'b'], ['02', '04'], ['32', '29']);

allArrays.forEach(function (a) {
    var length = a[1].length,
        pad = isNaN(a[0]) ? ' ' : '0',
        radix = isNaN(a[0]) ? 36 : 10,
        value = parseInt(a[0], radix),
        lastValue = parseInt(a.pop(), radix),
        inc = +(lastValue >= value) || -1,
        temp;

    value += inc;
    while (inc === 1 ? value <= lastValue : value >= lastValue) {
        temp = value.toString(radix);
        while (temp.length < length) {
            temp = pad + temp;
        }
        a.push(temp);
        value += inc;
    }
});

console.log(allArrays);
console.log(getPermutation(allArrays));
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于javascript - 在 jquery 中组合两个具有增量值的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41976209/

相关文章:

javascript - 比较两个数组并将不同的值推送到新数组

javascript - jQuery 验证和客户端事件

javascript - 如何创建自动化应用程序导览/演练?

javascript - 如何在使用脚本加载 div 后添加 css?

jquery - 如何将 ".position().left"的值和 "scrollLeft"的行为应用于溢出容器

javascript - 为什么这种拆分会产生重复?

javascript - 使用谷歌地图的 Vue.js 单页组件中找不到模块错误

javascript - 如何根据值为 HTML 表格单元格着色

javascript - 一键禁用窗口 beforeunload 属性

javascript - Google Charts API : Always show the Data Point Values using arrayToDataTable. 如何?