ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript で安定した並べ替えを実行して要素の順序の一貫性を維持するにはどうすればよいですか?

JavaScript で安定した並べ替えを実行して要素の順序の一貫性を維持するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-10-18 20:42:03626ブラウズ

How to Perform Stable Sorting in JavaScript to Maintain Element Order Consistency?

JavaScript の安定した並べ替えアルゴリズム

データを並べ替えるとき、等しい要素の元の順序を維持することは、安定した並べ替えアルゴリズムにとって重要です。このコンテキストでは、要素の順序の一貫性を維持しながら、特定のキーを持つオブジェクトの配列を特定の順序でソートすることを目的としています。

安定したソート手法

興味深いことに、非安定ソート機能を使用すると、安定したソートを実現できます。並べ替え前に各要素の初期位置を取得することで、位置を 2 番目の基準として使用して並べ替え比較の関係を解消できます。

JavaScript での実装

<code class="javascript">const sortBy = (arr, key, order) => {
  // Capture element positions
  const positions = arr.map((item, i) => {
    return { item, position: i };
  });

  // Perform sorting
  positions.sort((a, b) => {
    let cmp = a.item[key].localeCompare(b.item[key]);
    if (cmp === 0) {
      // Tiebreaker: sort by position
      cmp = a.position - b.position;
    }
    if (order === "desc") {
      return cmp * -1;
    } else {
      return cmp;
    }
  });

  // Return sorted objects
  return positions.map(position => position.item);
};</code>

使用例

<code class="javascript">const data = [
  { name: "Alice", age: 25 },
  { name: "Bob", age: 30 },
  { name: "Eve", age: 25 },
];

const sortedAscending = sortBy(data, "age", "asc");
console.log(sortedAscending); // [{ name: "Alice", age: 25 }, { name: "Eve", age: 25 }, { name: "Bob", age: 30 }]

const sortedDescending = sortBy(data, "age", "desc");
console.log(sortedDescending); // [{ name: "Bob", age: 30 }, { name: "Eve", age: 25 }, { name: "Alice", age: 25 }]</code>

この手法により、JavaScript で安定した並べ替えが可能になり、等しい値を持つ要素の元の順序が維持されます。

以上がJavaScript で安定した並べ替えを実行して要素の順序の一貫性を維持するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。