вложенный генератор массива для JS
// Random test
for (var test_num = 0; test_num <= 20; test_num++){
var nested_array = set_nested_array(0);
console.log('Test ' + test_num + '; nested_array = ');
console.log(nested_array);
console.log('Flattened array -> ' + nested_array.get_flattened_array());
}
/************************************/
/* Create random nested arrays */
/************************************/
function set_nested_array(level) {
var max_elements = Math.floor((Math.random() * 8)); // Set a random length array
var max_level = 10; // Stop recursivity at 10 level
var nested_array = [];
for (var index = 0; index < max_elements; index++) {
if (level <= max_level && Math.floor((Math.random() * 3)) == 0) { // 33% probability of new nested array
nested_array.push(set_nested_array(level + 1));
} else {
switch (Math.floor((Math.random() * 8))) {
case 0: nested_array.push(null);
case 1: nested_array.push('string');
case 2: nested_array.push({ prop1: 'x' });
default: nested_array.push(Math.floor((Math.random() * 100)));
}
}
}
return nested_array;
}
Defiant Dog