JSFiddle - React, Tailwind, and code Playground

by mitya33

JavaScript

function test() {
	let a = [1,2,3,4],
		b = [2,1,16,3];
	b.sort(() => Math.floor(Math.random() * 2));
	let pairs = a.map(val => {
		let val2_index = b[0] !== val ? 0 : 1;
		val2 = b[val2_index];
		if (!val2) val2 = val;
		b.splice(val2_index, 1);
		return [val, val2];
	});
	let final_pair = pairs[pairs.length-1];
	if (final_pair[0] === final_pair[1]) {
		let tmp = final_pair[1];
		final_pair[1] = pairs[0][1];
		pairs[0][1] = tmp;
	}
	let b_vals = [], problem;
	pairs.forEach(pair => {
		b_vals.push(pair[1]);
		if (pair[0] == pair[1]) problem = 'clash!';
	});
	if (new Set(b_vals).size !== b_vals.length) problem = 'dups!';
	if (problem) console.error(problem);
	console.log(pairs.join('|'));
	return pairs;
}

for(let k=0; k<500; k++) test();
alert('done');