If you're sure that you don't have any newlines in your filenames, mapfile is a good choice:
mapfile -t array < <(find . -name '*.txt')
Now if you want something more bullet proof, you can use:
mapfile -t array < <(find . -name '*.txt' -exec bash -c 'printf "%q\n" "${@:0}"' {} +)
eval array=( ${array[@]} )
You should feel really bad when seeing this last line: eval and unquoted ${array[@]}. It works and it's bullet proof since the array array has been built using the '%q' modifier of printf, so everything is nicely escaped or quoted so as to be used safely here!
find? There's no difference betweenfind *.txtand just*.txt, unless you have subdirectories with names ending in.txt. Did you meanfind . -name '*.txt'?