Por ejemplo, tengo una matriz como esa
var myArray = [ [1,2,3], [4,5,6], [7,8,9,10], [[11,12],[13,14,15]]]; for (var i = 0;i < myArray.length;i++){ for(var j = 0 ;j< myArray[i].length;j++){ for(var k = 0;k< myArray[i][j].length;k++){ console.log(myArray[i],[j][k]); } } }Pero la salida es solo 11,12,13,14,15. Y quiero imprimir todos los valores. ¿Alguien podría ayudar a solucionarlo? Gracias de antemano.
Esta función funciona para cualquier profundidad de matriz multidimensional. Usando recursividad
var myArray = [1,2,33,44, [1,2,3], [[11,12],[13,14,15]]]; var myArray1 = [1,2,33,44, [[11,12],[13,14,15]]]; var deepFlattenArray = function (array){ var result = []; array.forEach(function (element) { if (Array.isArray(element)) { result = result.concat(deepFlattenArray(element)); } else { result.push(element); } }); return result; }; console.log(deepFlattenArray(myArray)); // output = [ 1, 2, 33, 44, 1, 2, 3, 11, 12, 13, 14, 15] console.log(deepFlattenArray(myArray1)); // output = [1, 2, 33, 44, 11, 12, 13, 14, 15 ]Utilice, por ejemplo, Array.prototype.flat(), .flat(2) se aplana al nivel de 2 matrices de profundidad.
var myArray = [ [1,2,3], [4,5,6], [7,8,9,10], [[11,12],[13,14,15]]]; console.log(myArray.flat(2));Puede usar la función recursiva, primero pase toda la matriz, luego haga un bucle y verifique si el elemento al que está accediendo es una matriz o un dígito si su matriz llama a la misma función nuevamente y solo pasa este elemento; de lo contrario, si su dígito simplemente lo imprime
Esto funciona incluso cuando no sabe cuántas matrices anidadas tiene; de lo contrario, use la respuesta MWO
var myArray = [ [1,2,3], [4,5,6], [7,8,9,10], [[11,12],[13,14,15]]]; function printArray(arr){ for(var i = 0; i < arr.length; i++){ if(Array.isArray(arr[i])){ printArray(arr[i]); }else{ console.log(arr[i]); } } } printArray(myArray);