Iterate sur une matrice JavaScript sans utiliser de liens annelés

J'ai essayé d'itérer sur un tableau multidimensionnel en JavaScript et d'imprimer chaque élément dans le tableau. Existe-t-il un moyen d'imprimer chaque élément dans un tableau multidimensionnel sans utiliser de boucles annulées?

Http://jsfiddle.net/mKsDW/

var arr = [[1, 5],[7, 4]]; for(var i in arr){ alert(i); //this displays "0", then displays "1", //instead of printing each element in the array //how can I make it print each element in each 2D array instead, //without using nested for-loops for each dimension of the array? } 

On dirait que le problème est que vous pouvez avoir une nidification de profondeur arbitraire. Dans ce cas, utilisez une fonction récursive.

 function printArray(arr) { for (var i = 0; i < arr.length; i++) if (Array.isArray(arr[i])) printArray(arr[i]) else console.log(arr[i]) } 

Array.isArray aura besoin d'une cale pour les anciens navigateurs.

 if (!Array.isArray) Array.isArray = function(o) { return !!o && Object.prototype.toString.call(o) === "[object Array]" } 

Si vous ne souhaitez pas utiliser de boucles imbriquées, vous pouvez soit étaler le tableau, soit utiliser une fonction récursive. Quelque chose comme:

 arr.forEach(function each(item) { if (Array.isArray(item)) item.forEach(each); else console.log(item) });