gpt4 book ai didi

javascript - 在数组中循环遍历数组中的值。输出所有组合

转载 作者:行者123 更新时间:2023-11-30 08:34:47 36 4
gpt4 key购买 nike

我有一个对象。我想遍历它的一个属性:它本身是一个包含值的数组。对于这些值中的每一个,我想输出一个数组,其中包含每个子数组的代表值,以便输出所有可能的值组合。如果子数组中有多个值,一次最多允许 1 个值。正是在这一点上,我认为它应该“跳到”下一个(并对所有其他人做同样的事情)但我不确定如何。结果应如下所示:

RABBIT: GREY, FURRY, BOUNCES, CUTE

RABBIT: WHITE, FURRY, BOUNCES, CUTE

RABBIT: RED, FURRY, BOUNCES, CUTE

RABBIT: GREY, FURRY, SCAMPERS, CUTE

RABBIT: WHITE, FURRY, SCAMPERS, CUTE

RABBIT: RED, FURRY, SCAMPERS, CUTE

数组(及其子数组)的长度未知,因此我使用了 for 循环。这是到目前为止的代码:

window.onload = function (){
var myObject = {
name: 'RABBIT',
arrayOfValues : [
['GREY','WHITE','RED'],
['FURRY'],
['BOUNCES', 'SCAMPERS'],
['CUTE']
]
};

var results = [];
for (i=0;i<myObject.arrayOfValues.length;i++){
for (j=0; j<myObject.arrayOfValues[i].length;j++){
if(myObject.arrayOfValues[i].length>1) {
var currentProperty = myObject.arrayOfValues[i][j];
myFunc();
}
else {
var currentProperty = myObject.arrayOfValues[i][0];
myFunc();
};
};
};

function myFunc(){
results = results.concat(currentProperty);
if (results.length == myObject.arrayOfValues.length){
var finalResults = myObject.name + ': ' + results
console.log(finalResults);
};
};
};

PS - 数据的形式不是一成不变的,我只是为了方便使用了一个对象。

谢谢,保罗

最佳答案

您可以使用递增索引参数进行递归函数调用,以及将字符串的新部分附加到该字符串并返回的字符串。

var arrayOfArrays = [
['big', 'red'],
['red', 'yellow', 'blue'],
['dog', 'cat']
];

var strings = [];

function eachStep(string_so_far, array_index) {
if (array_index < arrayOfArrays.length) {
for (var i = 0; i < arrayOfArrays[array_index].length; i++) {
var string_for_this_step = string_so_far + arrayOfArrays[array_index][i] + " ";
var string_returned = eachStep(string_for_this_step, array_index+1);
if (string_returned !== "") {
strings.push(string_returned);
}
}
return "";
} else {
return string_so_far;
}
}

eachStep("", 0);

console.log(strings);

关于javascript - 在数组中循环遍历数组中的值。输出所有组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32634796/

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