我有一个对象。我想通过它的一个属性进行循环:它本身是一个包含值的数组数组。对于这些值中的每一个,我想输出一个包含来自每个子数组的代表值的数组,以便输出每个可能的值组合。在子数组中有多个值的情况下,应允许一次最大值为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 - 数据的形式并非一成不变,我只是为了方便而使用了一个对象。
谢谢,保罗
这是一种不是,但我注意到你重新传递值currentProperty使用什么叫全局 - 一个变量声明的函数之外。使用参数更容易和更好。 – wedstrom