配列の中に配列が含まれているような配列を1次元配列にする(多次元配列を1次元化)

多次元配列を1次元化

let ary = [0,[1,2],3,[4,5,[6,7],8],9,[],10];

function S (a, b) {
  return Array.isArray (b) ? b.reduce (S, a): (a.push (b), a);
}

console.log (ary.reduce (S,[]));// => [0,1,2,3,4,5,6,7,8,9,10]

配列を単一化する

let ary = [0,[1,2],3,[4,5,[6,7],8],9,[],10,[0,[1,2],3,[4,5,[6,7],8],[9,[],10]]];

//One dimension
function S (a, b) {
  return Array.isArray (b) ? b.reduce (S, a): (a.push (b), a);
}

//Unification
function U (a, b) {
  return a.has (b) ? a: a.set (b, 1);
}

console.log ([...ary.reduce (S,[]).reduce (U, new Map).keys ()]);// => [0,1,2,3,4,5,6,7,8,9,10]

そしていつものように短く書く

let ary = [0,[1,2],3,[4,5,[6,7],8],9,[],10,[0,[1,2],3,[4,5,[6,7],8],[9,[],10]]];

let
  O = (a,b) => Array.isArray (b) ? b.reduce (O, a): (a.push (b), a),
  U = (a,b) => a.has (b) ? a: a.set (b, 1);
  
console.log ([...ary.reduce (O,[]).reduce (U, new Map).keys ()]);

そして「教えてgoo」に質問してみた

ちょいパズルのような質問だったかな?
質問を投稿してから2分ぐらいしないと表示されないようだ。
質問のカテゴリの設定も、質問文を確認した後での設定なのかぁ。
数字のところは、FORMの中の要素を設定したいので Map は外せない。