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');