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) });