You could create a function that would return the neighboring chunks by just -1 and +1 of the x and y of the current chunk. For example, if you pass x = 40, y = 50, it will return an array of
[[39, 49], [40, 49], [41,49], [39, 50], [41, 50], [39, 51], [40, 51], [41, 51]]
And have some sort of Chunk management system that given a particular chunk's x and y, it loads that chunk and all its neighboring chunks, and unload the chunks that are no longer needed.