JavaScriptはわからんのでそれについては何も言えんし、
ひょっとしたら知ってるかもしれないのでトンチンカンな回答かも知れんが
シャッフルは以下のようなやりかたが一般的ではないだろうか。

配列0〜4にそれぞれ数値が入っていたとして、

まず配列0と、配列0〜4のどれか(ランダムで決める)の中身を交換する。
次に配列1と、配列0〜4のどれか(ランダムで決める)の中身を交換する。
次に配列2と、配列0〜4の(以下同文)

……を配列4まで繰り返す。