JSFiddle - React, Tailwind, and code Playground
JavaScript
var json = [{"cat":"Car","terms":["british english","jeep","bmw","brazilian"],"kw":["British English","Fast British English","Blue Jeep","Hot Brazilian Summer"]},{"cat":"Sport","terms":["football","basketball"],"kw":["American Football"]},{"cat":"Clothes","terms":["winter","summer"],"kw":["Hot Summer","Mild Summer","Hot Brazilian Summer"]},{"cat":"Languages","terms":["english","french","german","russian"],"kw":["Anglo-Saxon English","American English","British English","Canadian English","Fast British English","Austrian German"]},{"cat":"Weather","terms":["hot","warm","sunny"],"kw":["Hot Summer","Hot Brazilian Summer"]}]
var ii, jj, zz, len, csvStr, rowCount, hasRow, foundList;
ii = 0;
jj = 0;
zz = 0;
len = json.length;
csvStr = "";
foundList = [];
var tempObj = {};
for (ii = 0; ii < len; ii++) {
for (jj = 0; jj < json[ii].kw.length; jj++) {
for (zz = 0; zz < json[ii].terms.length; zz++) {
// checking whether keyword contains the term
if ( json[ii].kw[jj].toLowerCase().trim().indexOf(json[ii].terms[zz].toLowerCase().trim()) != -1) {
tempObj.keyword = json[ii].kw[jj];
tempObj.term = json[ii].terms[zz];
tempObj.cat = json[ii].cat;
foundList.push(clone(tempObj));
}
}
}
}
var uniques = {};
foundList.forEach(function (item) {
var serialized = JSON.stringify({key:item.keyword, cat:item.cat});
if (isMoreSpecific(item.term, uniques[serialized])) {
uniques[serialized] = item.term;
}
});
var keywordcategory = {};
for (var serialized in uniques) {
var obj = JSON.parse(serialized);
keywordcategory[obj.key] = obj.cat;
}
for (var key in keywordcategory) {
if (keywordcategory.hasOwnProperty(key)) {
csvStr += keywordcategory[key] + "\t";
csvStr += key + "\r\n";
}
}
console.log(csvStr);
function isMoreSpecific(term, reference) {
return !reference || term.indexOf(reference) !== -1;
...