我需要增加字母,我需要用组合来匹配字母。
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/