2016-06-22 32 views
0

我想写平铺数组,但它是如何停止检查代码到达嵌套数组时?它是把这个[ 1, 2, 3, [ [ [Object] ] ] ]代码如何停止检查是否是数组?

请解释为什么它停止通过嵌套的数组,以及为什么它不是连接。由于

flatten = function(nestedArray, result) { 
    result = []; 

    each(nestedArray, function(item){ 

     if(Array.isArray(item)){ 
      result = result.concat(item); 
     } else { 
      result.push(item); 
     } 
    }); 
return result; 
}; 

flatten([1, [2], [3, [[[4]]]]]) 
+1

你是不是循环子维度,只有阵列 – Justinas

+0

代码的第一个层次是错误的。你需要递归调用'flatten'方法。 – sndyuk

+0

谢谢你们!会做。 – spaceDog

回答

2

有没有像在JavaScript each没有一种方法,你可以做的是使用Array#forEachrecursion function

var flatten = function(nestedArray, result) { 
 
    result = []; 
 
    // iterate over array 
 
    nestedArray.forEach(function(item) { 
 
    if (Array.isArray(item)) { 
 
     // do recursion to flatten the inner array and concatenate 
 
     result = result.concat(flatten(item)); 
 
    } else { 
 
     result.push(item); 
 
    } 
 
    }); 
 
    return result; 
 
}; 
 

 
console.log(flatten([1, [2], [3, [[[4]]]]]));

+0

谢谢!我明白我做错了什么。谢谢。 – spaceDog

+0

@spaceDog:很高兴帮助你:) –

0
function pushfn(element,index, array){ 

if(Array.isArray(element)){ 
    element.forEach(pushfn); 
} 
else{ 
result.push(element); 
} 

}; 

result = []; 
var nestedArray = [1, [2], [3, [[[4]]]]]; 
nestedArray.forEach(pushfn); 

console.log(result);