2017-01-20 27 views

回答

1
function printArray(arr) { 
    if (typeof(arr) == "object") { 
     for (var i = 0; i < arr.length; i++) { 
      printArray(arr[i]); 
     } 
    } 
    else console.log(arr); 
} 

printArray([1,2,[3,4,[5,[6]],7],8,9]); 
+0

我只是将'document.write'改为'console.log'。这是非常糟糕的做法,使用'document.write' –

1

你可以试试这个,它会汇整阵列。

let a = [1, 2, [3, 4, [5, [6]], 7], 8, 9]; 
const flatten = arr => arr.reduce((a, b) => a.concat(Array.isArray(b) ? flatten(b) : b), []); 
console.log(flatten(a)); 

其实,你可以在这里找到:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce

更新1:

这里是另一种解决方案。

function flatten(arr) { 
    var x; 
    x = JSON.stringify(arr); 
    x = "[" + x.replace(/[\[\]]/g, "") + "]"; 
    return JSON.parse(x); 
} 
console.log(flatten(a)); 
0

这是ES6做的另一种方式:

var nested = [1, 2, [3, 4, [5, [6]], 7], 8, 9]; 

var flat = [].concat(nested); 

for(var i = 0; i < flat.length; i++) { 
    if(Array.isArray(flat[i])) { 
     flat.splice(i, 1, ...flat[i--]); 
    } 
} 

console.log(flat); 
+0

结果是:[1,2,3,4,数组[2],7,8,9]在铬或[1,2,3,4,[5 ,[6]],7,8,9]在Firefox中。 –

+0

耶看到它,用一个工作解决方案@Y.C更新了答案。 – Yaser

0

@Yaser解决方案似乎很优雅。万一你想用ramda

const arr = R.flatten([1, 2, [3, 4, [5, [6]], 7], 8, 9]); 
console.log(arr); //[1, 2, 3, 4, 5, 6, 7, 8, 9] 
0

当使用Node.js的使用功能框架,这里的例子,下面给我你的要求几乎什么,只是打印出来的输出没有逗号后的空间:获得在其他环境中相同的结果

console.log('[%s]', [1, 2, [3, 4, [5, [6]], 7], 8, 9]); 

阵列上调用toString()可能是必要的:

console.log('[%s]', [1, 2, [3, 4, [5, [6]], 7], 8, 9].toString()); 
+0

对我来说,在控制台中显示'[Array [5]]'。 –

+0

查看我的更新回答。 – cybersam