gpt4 book ai didi

javascript - 创建一个函数来组合嵌套数组而无需递归

转载 作者:行者123 更新时间:2023-11-29 17:51:14 25 4
gpt4 key购买 nike

我以下面的数组为例;

let arr = [['red','blue','pink],['dog','cat','bird'],['loud', 'quiet']]

我需要编写一个通用函数来打印第一个向量中的一个词、第二个向量中的一个词等的所有组合。我在这里查找了一些代码,但它们都是递归的或仅适用于特定数组.如何在不使用递归的情况下编写此代码?

let allComb = function(arr) {
if (arr.length == 1) {
return arr[0];
} else {
let result = [];
let arrComb = allComb(arr.slice(1));
for (let i = 0; i < arrComb.length; i++) {
for (let j = 0; j < arr[0].length; j++) {
result.push(arr[0][j] + ' ' + arrComb[i]);
}
}
return result;
}
}

allComb(arr)

最佳答案

此版本使用没有递归的每个周期单增量技术。

let arr = [
['red', 'blue', 'pink'],
['dog', 'cat', 'bird'],
['loud', 'quiet']
];

function allComb(arr) {
var total = 1;
var current = [];
var result = [];

for (var j = 0; j < arr.length; j++) {
total *= arr[j].length;
current[j] = 0;
}

for (var i = 0; i < total; i++) {
var inc = 1;
result[i] = "";
for (var j = 0; j < arr.length; j++) {
result[i] += arr[j][current[j]] + ' ';
if ((current[j] += inc) == arr[j].length)
current[j] = 0;
else
inc = 0;
}
}
return (result);
}
console.log(allComb(arr));

关于javascript - 创建一个函数来组合嵌套数组而无需递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43600132/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com