我有一个数组数组(有些像图形),如何迭代所有数组?
var parentArray = [
[[1,2,3],[4,5,6],[7,8,9]],
[[10,11,12],[13,14,15],[16,17,18]],
[[19,20,21],[22,23,24],[26,27,28]]
];
它只是一个示例数组,实际可以包含任意数量的数组,然后是数组。如何打印所有这些数字?它类似于html对象DOM
答案 0 :(得分:16)
这个递归函数应该可以使用任意数量的维度:
var printArray = function(arr) {
if ( typeof(arr) == "object") {
for (var i = 0; i < arr.length; i++) {
printArray(arr[i]);
}
}
else document.write(arr);
}
printArray(parentArray);
答案 1 :(得分:9)
对于二维阵列:
for(var i = 0; i < parentArray.length; i++){
for(var j = 0; j < parentArray[i].length; j++){
console.log(parentArray[i][j]);
}
}
对于具有未知维数的数组,您必须使用递归:
function printArray(arr){
for(var i = 0; i < arr.length; i++){
if(arr[i] instanceof Array){
printArray(arr[i]);
}else{
console.log(arr[i]);
}
}
}
答案 2 :(得分:7)
你需要做的是这样的事情
var parentArray = [
[[1,2,3],[4,5,6],[7,8,9]],
[[10,11,12],[13,14,15],[16,17,18]],
[[19,20,21],[22,23,24],[26,27,28]]
];
for(int i = 0; i < parentArray.length;i++){
var value = parent[i];
for(int j = 0; j < parent[i].length; j++){
var innerValue = parent[i][j];
}
}
所以这就像一个嵌套循环,然后在那里你可以做一些innerValue和value做一些操作,希望有所帮助
答案 3 :(得分:4)
一种选择是使用递归,该递归适用于任意数量的dephts 。请参阅traverse()
,它未经过测试,但应该给出一个大致的想法:
String.prototype.lpad = function(padString, length) {
var str = this;
while (str.length < length)
str = padString + str;
return str;
}
var level = 0;
function traverse(obj) {
if (obj instanceof Array) { level++; for(var i in obj) traverse(obj[i]); level--; }
else console.log(''.lpad('-', level) + obj);
}
答案 4 :(得分:4)
如果你只是想打印所有成员,那怎么样?
var items = parentArray.toString().split(",");
for(var i=0,j=items.length;i<j;i++)
console.log(items[i]);
答案 5 :(得分:1)
如果您有类似DOM的结构,则需要递归遍历元素。这样的事情应该有效:
function printArray(array) {
for (var i = 0; i < array.length; i++) {
var v = array[i];
if (v instanceof Array) {
printArray(v);
} else {
console.log(v);
}
}
}
答案 6 :(得分:0)
您可以在此处使用嵌套for循环。外部循环将迭代父数组,每次都为您提供一个内部数组。内部循环将为您提供每个数组中的项目。 例如:
for(childArray in parentArray){
for(item in childArray){
//do stuff here to each number
}
}
答案 7 :(得分:0)
使用array.forEach方法
parentArray.forEach( function(childArray) {
childArray.forEach(function(item){
console.log(item);
});
});
[ 1, 2, 3 ]
[ 4, 5, 6 ]
[ 7, 8, 9 ]
[ 10, 11, 12 ]
[ 13, 14, 15 ]
[ 16, 17, 18 ]
[ 19, 20, 21 ]
[ 22, 23, 24 ]
[ 26, 27, 28 ]
在ES6 +中使用=>“胖箭头”的一根衬里
parentArray.forEach(subarray => { subarray.forEach( item => {console.log(item); }); });
[ 1, 2, 3 ]
[ 4, 5, 6 ]
[ 7, 8, 9 ]
[ 10, 11, 12 ]
[ 13, 14, 15 ]
[ 16, 17, 18 ]
[ 19, 20, 21 ]
[ 22, 23, 24 ]
[ 26, 27, 28 ]
如果要在项目中列出个人编号,请添加另一层forEach。
答案 8 :(得分:0)
*如何在javascript中循环一个不确定的嵌套数组*
function isArray(x) {
if (typeof x === "object") {
return true;
} else {
return false;
}
}
let x = [1, 2, 3, 4, 5, [5, [2, 3, 4], 3], [[[0]]]];
function loop_map(x, idx) {
x.map((res, i) => {
console.log("Index ", i);
if (isArray(res)) {
loop_map(res, i);
} else {
console.log(res);
}
});
}
loop_map(x, 0);