word_index.py-
1. ngram_lookup_gen_terminus: Generate word-character spelling trees with word_ids only at terminus.  Output looks alright, not tested in client yet.
2. ngram_lookup_gen_every/NGramIdx previously refactored to produce various lengths of n-gram

2gram_test.html-
1. NGramIntersector_Stack - reductive search for word_ids given same n-gram map as before, stacking iteratively intersected generations as each input ngram is applied.  Not well-tested yet.
2. NGramIntersector_Counting mildly refactored to OOP, private vars etc, to support multiple instances during same session.

Motivation in trying additional approaches: The client code written so far is speedy, with respect to keyboard input.  But for broader usage -internal lookups, searches- fastest is best.

Array.prototype.filter() is another function to consider, as it returns a subset of the input array -vs Array.prototype.map(), which creates a full copy whether you want one or not.

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter