Can't you use 2D array?
In your example it will look like this:
[
["John","Megan","Luke"],["diamond","chess",""], ["so", "then", "how"]];
You can also store strings instead of child arrays (with values separated by comma or some other symbol).
You'll just need to parse them using tokenat()
["John,Megan,Luke","diamond,chess", "so,then,how"];
Or you can store JSON-strings of child arrays in your parent array. Of course, you'll have to "Load from JSON" before accessing them.
And finally, you can create several instances of the child array, and in the parent array store child array's UIDs. (or some other unique identifier of child array instances). However, saving and restoring all them from local storage will not be an easy task.