JSFiddle - React, Tailwind, and code Playground

by Robert Washbourne

HTML

<div id="test">
d
</div>

JavaScript

var input = {"synonyms":{"death":["death","death"]},"latins":{},"connectors":["AND","OR","/p","/s","w/5","andnot"],"removed_synonyms":{"death":["decease","expiry","dying","demise","last","Death","end","destruction","alteration","change","ending","imaginary being","imaginary creature","kill","killing","modification","organic phenomenon","putting to death","state"]},"removed_latins":{},"user_id":"auth0|5b3ac96efbdcb762d016f8e8"};

function product(iterables, repeat) {
  var argv = Array.prototype.slice.call(arguments), argc = argv.length;
  if (argc === 2 && !isNaN(argv[argc - 1])) {
  	var copies = [];
    for (var i = 0; i < argv[argc - 1]; i++) {
    	copies.push(argv[0].slice()); // Clone
    }
    argv = copies;
  }
  return argv.reduce(function tl(accumulator, value) {
    var tmp = [];
    accumulator.forEach(function(a0) {
      value.forEach(function(a1) {
        tmp.push(a0.concat(a1));
      });
    });
    return tmp;
  }, [[]]);
}

document.getElementById("test").innerHTML = "test";

var synonyms = Object.values(input["synonyms"]).concat(Object.values(input["latins"]));

console.log(synonyms);
var connector_list = input["connectors"];
var user_id = input["user_id"];

var combo_synonyms = product(...synonyms);
var connectors = product(connector_list, synonyms.length-1);

var formatted_syn_connectors = [];
for (var s in combo_synonyms) {
  for (var c in connectors) {
    var connected_synonym = combo_synonyms[s][0] + ' ';
    for (var i=0; i<c.length; i++) {
    	connected_synonym += connectors[c][i] + ' ' + combo_synonyms[s][i + 1] + ' ';
    	formatted_syn_connectors.push(connected_synonym.trim())
    }
  }
}

console.log(formatted_syn_connectors)

document.getElementById("test").innerHTML = JSON.stringify(formatted_syn_connectors);