2017-01-20 49 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