typescriptで、与えられたパターンをすべて返す関数を作ってみました。
網羅的にチェックをする場合に使えるかもしれません。
// by KatagiriSo
const patterns = <A>(list: A[][]) =>
list.reduce(
(as: A[][], pat: A[]) =>
as.flatMap((a: A[]) => pat.map(b => a.concat([b]))),
[[]]
)
これを使うと
console.log(patterns([["1", "2"], ["a", "b", "c"],["A","B"]]))
/*
[
[ '1', 'a', 'A' ],
[ '1', 'a', 'B' ],
[ '1', 'b', 'A' ],
[ '1', 'b', 'B' ],
[ '1', 'c', 'A' ],
[ '1', 'c', 'B' ],
[ '2', 'a', 'A' ],
[ '2', 'a', 'B' ],
[ '2', 'b', 'A' ],
[ '2', 'b', 'B' ],
[ '2', 'c', 'A' ],
[ '2', 'c', 'B' ]
]
*/
のようにすべてのパターンが網羅された配列を返します。