[英]I need to create a Logic that creates a new loop per item based on the Input Array
我需要创建一个嵌套逻辑,循环数基于输入数组长度。
这个数组可以有 N 个值,数组的名称是 penalities,我需要根据这些交互来制定我的逻辑。
如果输入数组长度 N 为 3,如惩罚数组 [1, 2, 3]
我的代码需要结果
for (let x = 1; x <= 2; x += 0.1) {
for (let y = 1; y <= 2; y += 0.1) {
for (let z = 1; z <= 2; z += 0.1) {
const penalities = [x, y, z];
myFunction(penalities);
}
}
}
enter code here
如果输入数组长度 N 为 4,如 penalities array= [1, 2, 3, 4]
我的代码需要结果
for (let x = 1; x <= 2; x += 0.1) {
for (let y = 1; y <= 2; y += 0.1) {
for (let z = 1; z <= 2; z += 0.1) {
for (let k = 1; k <= 2; k += 0.1) {
const penalities = [x, y, z, k];
myFunction(penalities);
}
}
}
}
如何使这个迭代逻辑通用以接收数组内的任何数量,而不必创建 N 嵌套。
您可以采用递归方法并为每个循环的值采用索引数组。
function iterate(array, cb) { function iter(index) { for (let i = 0, l = array[index]; i < l; i++) { indices[index] = i; if (index + 1 === array.length) cb(indices); else iter(index + 1); } } const indices = []; iter(0); } iterate([3, 2, 2, 4], indices => console.log(...indices));
.as-console-wrapper { max-height: 100%;important: top; 0; }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.