First off, generally, you don't want to parse the output of ls... http://mywiki.wooledge.org/ParsingLs
Next, The logic of your approach isn't wrong. There is an easier method that we can use to accomplish this task though!
ar=( $(find /home/documents/*) ); echo "${#ar[@]}"; echo "${ar[2]}"
Breaking it down we have.
$( find /home/documents/* )
This is a command substitution. It captures the output of the command that is written inside it. With this you can do something like output=$( find .) and now output is a variable that contains the results of the find command.
Next we have
ar=()
() Creates an array. The input to this array is now going to be the output of the find command. So when we put them together we end up with "Create an array from the output of this find command".
The rest of the command is just showing that ar is actually an array. We print out the length of the array and then the value at index 2.
Suggested Googling would be... command substitution in bash. Making an array from a command in bash. How to use arrays in bash.
NOTE: Realize that the command within the $( ) can include | to other commands such as find . | tr -d "." | ./some_other_command. Also i suggest reading the man page of find since "." and ".." may appear in your array as it is written now.