配列から重複した要素を取り除く

(2013年6月修正)

jQueryのunique()は、文字列には使えないようだ。

Description: Sorts an array of DOM elements, in place, with the duplicates removed. Note that this only works on arrays of DOM elements, not strings or numbers.

ということで、自前で作成する。
エラーチェックなどを除いたシンプルなコードは以下のイメージ。(xuarray.js)

// JavaScript

// オブジェクトの配列からプロパティ名を指定して重複を除く
function xua_uniqueObjectArray(objArray, propName){
  var storage = {};
  var uniqueObjArray = [];
  var i, value;

  for (i = 0; i < objArray.length; i++) {
    value = objArray[i][propName];
    if (!(value in storage)) {
      storage[value] = true;
      uniqueObjArray.push(objArray[i]);
    }
  }
  return uniqueObjArray;
}

// 単純な配列から重複を除く
function xua_unique(orgArray){
  var storage = {};
  var uniqueArray = [];
  var i, value;

  for (i = 0; i < orgArray.length; i++) {
    value = orgArray[i];
    if (!(value in storage)) {
      storage[value] = true;
      uniqueArray.push(value);
    }
  }
  return uniqueArray;
}

—–
配列から重複した要素を取り除くには、jQueryのunique()を使うと簡単だ。(JavaScriptには同じことをダイレクトに実現するメソッドはないようで、少々コードを書く必要がある。)

// JavaScript
// 元の配列
rideDates_ = ['2013/01/01', '2013/01/01', '2013/01/02', '2013/01/02'];
// 重複を除く
rideDates = $.unique(rideDates_);
// 結果
// rideDate = ['2013/01/01', '2013/01/02'];
カテゴリー: Tips タグ: , パーマリンク