投稿者 tel | 2011年12月24日

JavaScriptで配列の重複を取り除く

Array.prototype.unique = function() {
	var memo = {};
	return this.filter(function(e) {
		if(typeof memo[e] === 'undefined') {
			memo[e] = 0;
			return true;
		}
		return false;
	});
};
[1,1,1,2,3,4,4,2,5,6,6].unique(); // -> [1, 2, 3, 4, 5, 6] 成功
[{x:1,y:1},{x:0,y:1},{x:1,y:1},{x:0,y:1}].unique(); // -> [{x:1,y:1}] 失敗

Array拡張してしまってお行儀が悪いけど自分しか使わないからいいんだ。
この処理だとObjectの配列とかだとうまくいかない。あと配列の中のundefinedは全部なくなってしまう。


コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

カテゴリー

%d人のブロガーが「いいね」をつけました。