jQuery:配列内の並べ替え
2025.12.25
配列にjQueryオブジェクトを複数格納し、並べ替えるメモです。
配列操作にやや苦手意識があるので、思ったより簡単にできた、という感じで。

●HTML
<ul class="list">
  <li class="item" data-num="025">アイテム1</li>
  <li class="item" data-num="010">アイテム2</li>
  <li class="item" data-num="075">アイテム3</li>
  <li class="item" data-num="050">アイテム4</li>
</ul>

●JavaScript
const $list = $('.list'); // リスト要素
const $items = $list.find('.item'); // リスト内の全アイテム

// アイテムを格納する配列を宣言
const itemsArray = [];

// 各アイテムをjQueryオブジェクトとして配列に追加
$items.each(function() {
  itemsArray.push($(this));
});

// data-num属性の値で昇順ソート
itemsArray.sort((a, b) => {
  // 各アイテムのdata-num属性を取得し、数値に変換
  const numA = parseInt(a.attr('data-num'), 10);
  const numB = parseInt(b.attr('data-num'), 10);
  // 数値として比較(昇順)
  return numA - numB;
});

// リストを空にしてから、ソート済みアイテムを追加
$list.empty().append(itemsArray);

●ポイント
・a, b に比較対象となるjQueryオブジェクトが入るので、jQuery用のメソッドを使用して比較する値を取得する。
・配列はそのまま.append()/.prepend()することができる。
・サンプルは数値で比較しているが、比較したい内容に合わせて.sort()の内容を変更する。

月別アーカイブ