Consonant Initial and Final Blends Extractor

For Syllable Generator

by skibulk

HTML

<h1>Initial Blends</h1>
<div id="initialBlends"></div>
<h1>Final Blends</h1>
<div id="finalBlends"></div>

JavaScript

console.clear();

var input = `a;a
a;back
a;ban;don
a;ban;don;ment
a;ban;doned
a;bat;ed
a;bate
a;bate;ment
a;bet
a;bi;ot;ic
a;bid;ing
a;bide
a;bil;i;ty
a;blaze`.replace(/[aeiou]+/g, "_").split(/[\r\n]+/);

// console.log(input);

var initialBlends = [];
var finalBlends = [];

var i, j, ib, fb;

for(i=0; i<input.length; i++){

	var ib = [...input[i].matchAll(/([a-z][a-z]+)_/g)];
	for(j=0; j<ib.length; j++){
  	initialBlends.push(ib[j][1]);
  }
  
	var fb = [...input[i].matchAll(/_([a-z][a-z]+)/g)];
	for(j=0; j<fb.length; j++){
  	finalBlends.push(fb[j][1]);
  }
}

console.log(initialBlends, finalBlends);

// Remove Duplicates and Sort
initialBlends = highFrequency(initialBlends, 2);
finalBlends = highFrequency(finalBlends, 2);

function highFrequency(arr, minimum){
  var freq = {};
  arr.forEach(function (x) { freq[x] = (freq[x] || 0) + 1; });
  var highFreq = [];
  for(var prop in freq){
  	//console.log(prop, freq[prop]);
  	if(freq[prop] >= minimum){
    	highFreq.push(prop);
    }
  }
  return highFreq;
}

// console.log(initialBlends, finalBlends);

document.getElementById("initialBlends").innerHTML = initialBlends.join("<br>\r\n");

document.getElementById("finalBlends").innerHTML = finalBlends.join("<br>\r\n");