日本語が難しい…入力した複数の配列に含まれる要素毎に、それぞれの配列に含まれているかを調べる。効率はともかく、for を使わないで書こうとすると以下のようになる。使えるかはともかく…
import { uniq } from 'lodash';
const arrays = [
[ 1, 2, 4, 6 ],
[ 1, 7 ],
[ 2, 3, 4 ]
];
// 複数の配列を連結して重複を取り除く
const merged = uniq( arrays.reduce( ( merged, array ) => merged.concat( array ), [] ) ).sort();
console.log( merged );
// merged = [ 1, 2, 3, 4, 6, 7 ]
// 配列毎に merged の要素が含まれるかの判定
const exists = arrays.map( array => merged.map( x => array.indexOf( x ) >= 0 ) );
console.log( exists );
// exists = [
// 1 2 3 4 6 7 が含まれるかどうか↓
// [ true, true, false, true, true, false ],
// [ true, false, false, false, false, true ],
// [ false, true, true, true, false, false ]
// ]
// CSVとして書き出し
const output = createWriteStream( './test.csv', 'utf8' );
merged.forEach( (x,i) => {
output.write( [ x, ...exists.map( e => e[i] ) ].join(',') + '\n' );
} );