javascript - 生成可以为从 1 到 5 的给定输入选择生成的所有可能序列的列表
问题描述
我一直在涉足一些有趣的挑战,我遇到了这个让我有点沮丧的问题。谁能指出我正确的方向?
我有一个清单:
var values = ['blue', 'green', 'red', 'yellow', 'purple'];
从该列表中,我想返回给定输入的所有可能序列。我试过这样的事情:
function combinations(number) {
const values = ['blue', 'green', 'red', 'yellow', 'purple'];
let arr = values.slice(0, number);
if (arr.length === 1) {
result = [...arr];
console.log(result)
}
var result = arr.reduce((acc, v, i) => acc.concat(arr.slice(i + 1).map(w => v + ' ' + w)),[]);
console.log(result);
}
combinations(2);
但结果只返回['blue', 'green']
它应该返回的地方['blue', 'green', 'bluegreen', 'greenblue']
。该解决方案应为每个序列返回至少 1 个值,当然没有重复
有人可以帮忙吗!!我被困住了!
解决方案
var permArr = [],
usedChars = [];
const values = ['blue', 'green', 'red', 'yellow', 'purple'];
function permute(number, temp) {
let input = temp ? temp : values.slice(0, number);
var i, ch;
for (i = 0; i < input.length; i++) {
ch = input.splice(i, 1)[0];
usedChars.push(ch);
// if (input.length == 0) {
permArr.push(usedChars.slice());
// }
temp = input;
permute(number, input);
input.splice(i, 0, ch);
usedChars.pop();
}
return permArr
};
var perm = permute(5);
console.log(perm.length)
console.log(perm);
推荐阅读
- c# - 来自变量c#的插值字符串
- css - 使用 CSS 的 3 面金字塔?
- javascript - React - laravel - 未捕获的错误:目标容器不是 DOM 元素
- delphi - 如何在 Delphi 中使用智能卡证书签署 PDF 文件
- java - 我如何在 Akka 项目中获取 kryo 登录
- angular - 获取对 Angular 输入字段的 JSON 响应?
- php - 从总购物车中减去运输类别的金额,然后申请免费送货
- python - RuntimeError:字典在python中的迭代过程中改变了大小
- css - Woocommerce 价格的不同风格
- android - Android 更新到 3.2.1 后资源编译失败