配列の中に配列が含まれているような配列を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 は外せない。