javascript - 将计数器添加到 javascript 数组的 n 个组合中
问题描述
该程序应输出数组中元素的多种可能组合。我没有做的是在左侧为每个可能的组合添加一个计数器。第一个组合为“001”,第二个组合为“002”,依此类推,直到最后一个。我尝试使用 for 循环和 while-do 以多种方式做到这一点,但任何尝试都是失败的。
function combine(a, b, c) {
if (b === 0) {
console.log(three.join(" "));
return;
}
for (var i = c; i <= a.length - b; i++) {
three[three.length - b] = a[i];
combine(a, b - 1, i + 1);
}
}
const vegetables = ["carrot", "tomatoes", "potatoes", "celery", "pepper"];
const three = [];
three.length = 4;
combine(vegetables, three.length, 0);
解决方案
您可以使用它padStart
来生成您要查找的内容。像这样的东西
const vegetables = ["carrot", "tomatoes", "potatoes", "celery", "pepper"];
const three = [];
three.length = 4;
let counter = 1;
function combine(a, b, c) {
if (b === 0) {
const counterForPrint = (counter++).toString().padStart(3, "0");
console.log(`${counterForPrint} ${three.join(" ")}`);
return;
}
for (let i = c; i <= a.length - b; i++) {
three[three.length - b] = a[i]; combine(a, b - 1, i + 1);
}
}
combine(vegetables, three.length, 0);
顺便说一句,您可以使用一些库来生成组合。它使事情变得非常清晰,让您专注于实际逻辑。像这样的东西
const Combinatorics = require("js-combinatorics");
const vegetables = ["carrot", "tomatoes", "potatoes", "celery", "pepper"];
const possibleCombinations = Combinatorics.permutation(vegetables);
let counter = 1;
possibleCombinations.forEach(element => {
const counterForPrint = (counter++).toString().padStart(3, "0");
console.log(`${counterForPrint} ${element}`);
});
推荐阅读
- java - 如何以 AB123 --> AB 123 格式拆分字符串?爪哇
- javascript - 如何删除谷歌图表中的工具提示
- ag-grid - 农业网格的最佳自动化测试套件是什么?
- oracle - 如何在不显示密码的情况下从 unix 连接 oracle 数据库
- gcc - GCC 的 ffast-math 是否具有跨平台或编译器版本的一致性保证?
- jquery - 为什么 JQuery 需要时间来加载?
- javascript - 移动设备上输入值更改的正确事件是什么?
- angular - 如果没有 JSON 数据,在组件中隐藏 div
- android - 未调用 Android MotionLayout 过渡侦听器
- cucumberjs - 如何使用 Cucumber Selenium 页面工厂处理或集成多步 def 文件?