我需要创建一个逻辑,根据输入数组为每个项目创建一个新循环
I need to create a Logic that creates a new loop per item based on the Input Array
我需要创建一个嵌套逻辑,循环次数基于输入数组长度。
这个数组可以有 N 个值,数组的名称是 penalities,我需要根据那个交互来制定我的逻辑。
如果输入数组长度N为3,比如penalities数组[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,则惩罚数组=[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; }
我需要创建一个嵌套逻辑,循环次数基于输入数组长度。
这个数组可以有 N 个值,数组的名称是 penalities,我需要根据那个交互来制定我的逻辑。
如果输入数组长度N为3,比如penalities数组[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,则惩罚数组=[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; }