我有一個嵌套的數組:如何在JavaScript中有效地打印嵌套數組?
[1, 2, [3, 4, [5, [6]], 7], 8, 9]
我怎麼能打印在一個優雅的方式是這樣的:
[1, 2, 3, 4, 5, 6, 7, 8, 9]
我有一個嵌套的數組:如何在JavaScript中有效地打印嵌套數組?
[1, 2, [3, 4, [5, [6]], 7], 8, 9]
我怎麼能打印在一個優雅的方式是這樣的:
[1, 2, 3, 4, 5, 6, 7, 8, 9]
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]);
我只是將'document.write'改爲'console.log'。這是非常糟糕的做法,使用'document.write' –
你可以試試這個,它會彙整陣列。
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
這裏是另一種解決方案。
function flatten(arr) {
var x;
x = JSON.stringify(arr);
x = "[" + x.replace(/[\[\]]/g, "") + "]";
return JSON.parse(x);
}
console.log(flatten(a));
這是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);
結果是:[1,2,3,4,數組[2],7,8,9]在鉻或[1,2,3,4,[5 ,[6]],7,8,9]在Firefox中。 –
耶看到它,用一個工作解決方案@Y.C更新了答案。 – Yaser
@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]
當使用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());
對我來說,在控制檯中顯示'[Array [5]]'。 –
查看我的更新回答。 – cybersam
你不是什麼優雅的方式? – epascarello
「print」與'console.log'或「print」一樣在html中輸出? – Jack
'JSON.parse(「[」+ [1,2,[3,4,[5,[6]],7],8,9] .join(「,」)+「]」)' – epascarello