// change this to your desired substring (case-insensitive)
const nameFilter = "Goblin";
 
const monstersAsDvArray = dv
  .array(Array.from(FantasyStatblocks.getBestiary().values()))
  // only those with a CR
  .filter(m => m.cr)
  // only CR = '1'
  .where(m => m.cr == '1')
  // only names containing our filter term
  .filter(m => 
    m.name && 
    m.name.toLowerCase().includes(nameFilter.toLowerCase())
  );
 
// cap at 20 entries
const limitedMonsters = monstersAsDvArray.slice(0, 20);
 
dv.table(
  ["Name", "HP", "AC", "CR", "Source"],
  limitedMonsters.map(monster => [
    dv.fileLink(monster.name),
    monster.hp,
    monster.ac,
    monster.cr,
    monster.source
  ])
);