For example i have a array like that
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]);
}
}
}
But output is only 11,12,13,14,15. And i wanna print all the values Could some one help to fix Thank you in advance
CodePudding user response:
You can use recursive function first pass it the whole array then loop it and check if the element you are accessing is array or digit if its array call the same function again and only pass it this element otherwise if its digit just print it
This works even when you dont know how many nested arrays you have otherwise use MWO answer
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);
<iframe name="sif1" sandbox="allow-forms allow-modals allow-scripts" frameborder="0"></iframe>
CodePudding user response:
Use e.g. Array.prototype.flat(), .flat(2) flattens to the level of 2 arrays deep.
var myArray = [
[1,2,3],
[4,5,6],
[7,8,9,10],
[[11,12],[13,14,15]]];
console.log(myArray.flat(2));
<iframe name="sif2" sandbox="allow-forms allow-modals allow-scripts" frameborder="0"></iframe>