<!DOCTYPE html>
<html>
<script>
const newArr = [];
function _flatten(arr){
arr.forEach(val => {
console.log(`start: ${val}`);
if(Array.isArray(val)){
_flatten(val);
}else{
console.log(`push start...${val}`);
newArr.push(val);
}
});
}
_flatten(arr);
return newArr;
}
let res = flatten([1,[2],[3,[4]]]);
console.log(res);
alert(res); // [1,2,3,4]
</script>
</html>
以上是可以正确返回的代码。
但是,前一个版本,总是不能有正确的返回,总是返回[].
检查看,是因缺少函数调用:_flatten(arr);
想着,可不可以自身调用?
function flatten(arr) {
const newArr = [];
(function (arr) {
function _flatten(arr) {
arr.forEach(val => {