樣本輸入
大批
在這里,我展示了一個 3 維陣列,但實際維數有所不同,稱為n.
[
[
[1,2],
[3,4]
],
[
[5,6],
[7,8]
]
]
分隔符
它的長度 ( n) 與陣列的維數相同,其中第 i 個元素表示陣列第 i 級的分隔符。
[',', '_', '-']
期望的輸出
1-2_3-4,5-6_7-8
我試過的
它適用于 3 維陣列,但不適用于 4 維陣列。
我知道我的代碼出了什么問題,但我不知道如何修復它。
此外,我認為還有更簡單和/或更有效的方法。
3維(作業)
const array = [[[1,2],[3,4]],[[5,6],[7,8]]];
const separators = [',', '_', '-'];
const _separators = separators.reverse();
let i;
function join(array, first = false) {
const next = Array.isArray(array[0]);
let result;
if (next) {
result = array.map(e => {
if (first) { i = 0; }
return join(e);
});
i ;
result = result.join(_separators[i]);
}
else {
result = array.join(_separators[i]);
}
return result;
}
const result = join(array, true);
console.log(result);
4維(無法正常作業)
const array = [[[[1,2],[3,4]],[[5,6],[7,8]]],[[['A','B'],['C','D']],[['E','F'],['G','H']]]];
const separators = ['|', ',', '_', '-'];
const _separators = separators.reverse();
let i;
function join(array, first = false) {
const next = Array.isArray(array[0]);
let result;
if (next) {
result = array.map(e => {
if (first) { i = 0; }
return join(e);
});
i ;
result = result.join(_separators[i]);
}
else {
result = array.join(_separators[i]);
}
return result;
}
const result = join(array, true);
console.log(result);
// desired output: 1-2_3-4,5-6_7-8|A-B_C-D,E-F_G-H
uj5u.com熱心網友回復:
像這樣的遞回
const join = (array, separators, depth) => {
if (depth < separators.length -1) {
return array.map(el => join(el, separators, depth 1)).join(separators[depth]);
} else {
return array.join(separators[depth]);
}
};
{
const array = [[[1,2],[3,4]],[[5,6],[7,8]]];
const separators = [',', '_', '-'];
console.log(join(array, separators, 0));
}
{
const array = [[[[1,2],[3,4]],[[5,6],[7,8]]],[[['A','B'],['C','D']],[['E','F'],['G','H']]]];
const separators = ['|', ',', '_', '-'];
console.log(join(array, separators, 0));
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/407033.html
標籤:
上一篇:Pandas:如何輕松地將資料幀與不同鍵上的許多其他資料幀合并?
下一篇:SQL查詢JOIN和聚合
