JSFiddle - React, Tailwind, and code Playground
HTML
<div>A-B</div>
<div>B-D</div>
<div>A-C</div>
<br />
<span class='putmehere'></span>
<br />
<br />
<span class='putmehere2'></span>
JavaScript
var totaldivs = $('div').length; //count total divs or objects
console.log("Total divs = " + totaldivs);
var elements = []; //Read objects from the divs and assign to array elements
for(var i = 0; i < totaldivs; i++ )
{
elements[i] = $( 'div:eq(' + i + ')' ).text();
elements[i] = elements[i].replace(/\s+/g, '');
console.log(elements[i]);
}
var objects = []; //make array of all individual objects
var loopvar = 0;
for(var n = 0; n < totaldivs; n++)
{
poshyphen = elements[n].indexOf('-');
objects[loopvar] = elements[n].substring(0, poshyphen);
objects[loopvar+1] = elements[n].substring(poshyphen+1, elements[n].length);
loopvar = loopvar + 2;
}
$('.putmehere2').html(objects);
var pair = [];
var pairindex = 0; //make and array of all combinations of objects - pair
for(var r = 0; r < totaldivs; r++)
{
for(var s = 0; s <totaldivs; s++)
{
if(elements[r] != elements[s])
{
pair[pairindex] = elements[r] + '-' + elements[s];
pairindex++;
}
}
}
$('.putmehere').html(pair);
var solution = [];
var sol = 0;
var count = [];
var reg = new RegExp("regex","g");
for( var q = 0; q < pair.length; q++)
{
for( var r = 0; r < 4; r++)
{
var regex = new RegExp( objects[r], 'g' );
count[r] = (pair[q].match( regex )||[]).length;
console.log("Pair= " + pair[q] + " Objects = " + objects[r] + " Count= " + count[r]);
}
if( count[0] == 1 && count[1] == 1 && count[2] == 1 && count[3] == 1 )
{
solution.push( pair[q]);
}
}
$('.putmehere2').html(solution);