追記2:concatだと配列のなかに配列が入ってると勝手に展開されて駄目だった。Constellationさんのコメントのコードを使うとその問題も起こらない。 追記:配列の中身に文字列以外が入ってるとうまくいかない。詳しくはコメント参照。 こうするといい。 function uniq(arr) Array.reduce(arr, function(a, b) a.indexOf(b) == -1? a.concat(b): a , []); 追記ここまで 前に作ったものよりだいぶ簡潔。たぶん速いんじゃないかと思う。配列風オブジェクトにも使える。 function uniq(arr) { var o = {}; return Array.filter(arr, function(i) i in o? false: o[i] = true); } uniq([0,1,2,3,4,8,false